题目描述
查找和排序
题目:输入任意(用户,成绩)序列,可以获得成绩从高到低或从低到高的排列,相同成绩
都按先录入排列在前的规则处理。
例示:
jack 70
peter 96
Tom 70
smith 67
从高到低 成绩
peter 96
jack 70
Tom 70
smith 67
从低到高
smith 67
Tom 70
jack 70
peter 96
输入描述:
输入多行,先输入要排序的人的个数,然后输入排序方法0(降序)或者1(升序)再分别输入他们的名字和成绩,以一个空格隔开
输出描述:
按照指定方式输出名字和成绩,名字和成绩之间以一个空格隔开
源代码:
#include<stdio.h> struct Item{ char name[20]; int score; }; int main(void){ int count; //排序的人的个数 int sort; //排序的方式 0为降序 int i,j; scanf("%d",&count); scanf("%d",&sort); struct Item students[count]; for(i=0;i<count;i++){ scanf("%s %d",&students[i].name,&students[i].score); //输入 } //排序 struct Item temp; //中间变量 if(sort){ for(i=0;i<count;i++){ for(j=0;j<count-i-1;j++) { if(students[j].score>students[j+1].score) { temp=students[j+1]; students[j+1]=students[j]; students[j]=temp; } } } } else { for(i=0;i<count;i++){ for(j=0;j<count-i-1;j++) { if(students[j].score<students[j+1].score) { temp=students[j+1]; students[j+1]=students[j]; students[j]=temp; } } } } //输出 for(i=0;i<count;i++){ printf("%s %d\n",students[i].name,students[i].score); } return 0; }
结果:在dev c++上运行结果正确,但是在线编程没有通过。希望各位大侠多多指教