C语言 结构体排序问题

2024-12-16 01:57:43
推荐回答(3个)
回答1:

由于你只是交换字符串,所以修改如下,请检验。
用strcpy(s1,s2)进行复制字符串,不能直接s1=s2。
#include
#include
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;i {
k=i;
for(j=i+1;j if(library.book[j].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);
}
}
}

回答2:

void sort(struct student *ptr,int n)
{
struct student t;
for(int i=1;i for(int j=0;j if(*(ptr+j).grade < *(ptr+j+1).grade)
{
t=*(ptr+j);
*(ptr+j)=*(ptr+j+1);
*(ptr+j+1)=t;
}
}

回答3:

simple