69,381
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
struct student
{
char name[21];
int score;
};
int main()
{
struct student a[100],t;
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s %d", a[i].name,&a[i].score);
for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)
if(a[j].score<=a[j+1].score)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
for(i=1;i<=n;i++) /*去掉这儿的分号*/
printf("%s\n",a[i].name);
getchar();
getchar();
return 0;
}
建议i从0开始,因为数组的下标都是从0开始的。另外,对n的值进行检查,若大于100,则会出现数组越界,因此n不能超过100;