【问题背景】
C语言程序设计慕课版第二版第八章第三题
【问题题目】
使用字符数组和实型数组分别存储学生姓名和成绩,并通过对学生成绩的排序,按照名次输出字符数组中对应的学生姓名。
【代码呈上】
#include <stdio.h>
#include <string.h>
struct stu
{ int zf[5];char name[10];int score[3];
}s[50];
int main()
{int m,i,j,x,sum,t;
printf("请输入学生数\n");
scanf("%d",&m);
printf("请输入姓名,成绩\n");scanf("%d",&m);for(i=0;i<m;i++){scanf("%s",s[i].name);for(sum=0,j=0;j<3;j++){scanf("%d",&s[i].score[j]);}} for(i=0;i<m;i++){printf("%s\n",s[i].name);for(j=0;j<3;j++){ s[i].zf[i]+=s[i].score[j];printf("%5d",s[i].score[j]);} printf("\n");printf("%d\n",s[i].zf[i]);}for(i=0;i<m;i++) {for(x=i+1;x<m;x++){if(s[i].zf[i]<s[x].zf[x]){t=s[i].zf[i];s[i].zf[i]=s[x].zf[x];s[x].zf[x]=t;strcpy(s[5].name,s[i].name);strcpy(s[i].name,s[x].name);strcpy(s[x].name,s[5].name);}} printf("%s %d\n",s[i].name,s[i].zf[i]); }return 0;
}