C语言结构体排序问题

题目:输入n本书(n<=100),及每本书的书名,价格和分类(空格分隔输入数据),

请分别根据价格递增顺序排序,如果价格相同,则按照书名(ASCII码)递增排序。

最后输出排序后的结果,每行一本书详细信息。

样例:

输入:

3

program 35 1

history 35 2

cloudy-computing 57 1

输出

history,35.00,2

program,35.00,1

cloudy-computing,57.00,1

这个问题可心用结构体来解决,C语言中数组是不能赋值的,但是结构体可以赋值,利用这一点可以很好的解决类似的问题。代码如下图:

C语言结构体排序问题

代码:

#include

#include

typedef struct book {

char name[50];

float price;

int classf; };

int main(){

int n,i,j;

scanf("%d",&n);

struct book ls[100];

for(i=0;i

scanf("%s %f %d",ls[i].name,&ls[i].price,&ls[i].classf);

}

for(i=0;i

for(j=i+1;j

if(ls[i].price>ls[j].price){

struct book temp=ls[i];

ls[i]=ls[j];

ls[j]=temp;

}

}

}

for(i=0;i

for(j=i+1;j

if(ls[i].price==ls[j].price&&strcmp(ls[i].name,ls[j].name)>0){

struct book temp=ls[i];

ls[i]=ls[j];

ls[j]=temp;

}

}

}

for(i=0;i

printf("%s,%.2f,%d ",ls[i].name,ls[i].price,ls[i].classf);

}

return 0;

}

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章