题目:输入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语言中数组是不能赋值的,但是结构体可以赋值,利用这一点可以很好的解决类似的问题。代码如下图:
代码:
#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 条评论)
“”