程序的运行示例如下:
输入第1个学生的信息:学号、姓名、成绩
2011 zhangsan 89
输入第2个学生的信息:学号、姓名、成绩
2012 lisi 96
输入第3个学生的信息:学号、姓名、成绩
2013 wangwu 67
输入第4个学生的信息:学号、姓名、成绩
2014 liuliu 59
排序后学生的信息为:
2012 lisi 96
2011 zhangsan 89
2013 wangwu 67
2014 liuliu 59
本题目要求学生id使用无符号整数,故注意变量的声明,%u以十进制数输出unsigned型数据(无符号数)。废话不多说,直接上代码:
#include <stdio.h>
struct stu
{
unsigned int id;
char name[15];
int score;
}stu1[4];
int main()
{
int i,j;
struct stu temp;
for(i=0;i<4;i++)
{
printf("输入第%d个学生的信息:学号、姓名、成绩\n",i+1);
scanf("%u%s%d",&stu1[i].id,stu1[i].name,&stu1[i].score);
}
for(i=0;i<4;i++)
{
for(j=i+1;j<4;j++)
{
if(stu1[i].score<stu1[j].score)
{
temp=stu1[i];
stu1[i]=stu1[j];
stu1[j]=temp;
}
}
}
printf("排序后学生的信息为:\n");
for(i=0;i<4;i++)
{
printf("%u %s %d\n",stu1[i].id,stu1[i].name,stu1[i].score);
}
return 0;
}