大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
就是排序问题嘛,跟结构体有啥关系?
创新互联是一家专注于成都做网站、成都网站制作、成都外贸网站建设与策划设计,金林网站建设哪家好?创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:金林等地区。金林做网站价格咨询:18980820575
比较结构体中的shu成员啊
冒泡排序的核心代码如下:
struct student ss[20],t;
for(i=0;i20-1;i++)
{
for(j=20-1;ji;j--)
{
if(ss[j].shu ss[j-1].shu)
{
t=ss[j];
ss[j]=ss[j-1];
ss[j-1]=t;
}
}
}
补充:
只需要在交换的时候,按整个结构体换,就行了啊
下面交换代码中的t和ss都是结构体啊
struct student ss[20],t;
t=ss[j];
ss[j]=ss[j-1];
ss[j-1]=t;
求采纳为满意回答。
设结构体名为AAA,结构体数组声明为struct AAA a[N];(N为宏定义常量),身份证成员名为id,则排序函数可如下写——
#include "stdio.h"
#include string.h
#define N 3
struct AAA{
char id[20];
int age;
};
void mysort(struct AAA *p){//排序函数
struct AAA t;
int i,j,k;
for(i=0;iN;i++){
for(k=i,j=k+1;jN;j++)
if(strcmp((p+j)-id,(p+k)-id)0)
k=j;
if(i!=k)
t=*(p+k),*(p+k)=*(p+i),*(p+i)=t;
}
}
int main(int argc,char *argv[]){//测试主函数
struct AAA a[N]={{"650104194812109907",77},{"333018201801015555",1},{"650104194812109903",80}};
mysort(a);
printf("%s\t%d\n",a[0].id,a[0].age);
printf("%s\t%d\n",a[1].id,a[1].age);
printf("%s\t%d\n",a[2].id,a[2].age);
return 0;
}
运行结果:
由于你只是交换字符串,所以修改如下,请检验。
用strcpy(s1,s2)进行复制字符串,不能直接s1=s2。
#includestdio.h
#include time.h
typedef struct
{
char number[10];//书号
char name[50];//书名
char author[20];//作者
char publish[50];//出版社
char time[20];//出版时间
float price;//单价
}mbook;
typedef struct
{
int count;//书的本数
mbook book[10];//最大可有书的数量
}mlibrary;
mlibrary library,t;
main()
{ void sort_by_price(void);
sort_by_price();
}
void sort_by_price(void) /*定义按价格排序函数*/
{
int i,j,k;
char sn[10];
for(i=0;ilibrary.count-1;i++)
{
k=i;
for(j=i+1;jlibrary.count;j++)
if(library.book[j].pricelibrary.book[k].price)
k=j;
if(k!=i)
{
strcpy(sn,library.book[k].number);
strcpy(library.book[k].number,library.book[i].number);
strcpy(library.book[i].number,sn);
}
}
}
c语言引用结构体变量有一条规则,同类结构体可以相互赋值,形式time1=time2
,假如把结构体当做普通变量,也就是说,和以前学到的给整形数组冒泡排序基本没有区别。
#includestdio.h
struct Time
{ int hour;
int minute;
int sec;
};
void main()
{
Time swap;
Time time[2]={1,1,1,2,2,2};
printf("%d:%d:%d\n",time[0].hour,time[0].minute,time[0].sec);
swap=time[0];
time[0]=time[1];
time[1]=swap;
printf("%d:%d:%d\n",time[0].hour,time[0].minute,time[0].sec);
}
OK?普通交换而已