总分排序
描述
输入n个学生数据记录(姓名、学号,5门课成绩)算出总分并且进行排序,按总分最后从高到低输出这些数据。
输入:
第一行输入学生的个数N接下来的N行输入学生的姓名,学号,5门科的成绩。
输出:
一共输出N行,每行输出学生的姓名,学号,及总分(格式:total=?),每个数据相隔一个空格
输入样例 1
3 A 200701 98 125 100 96 85 B 200702 100 100 100 100 120 C 200703 130 80 70 50 50
输出样例 1
B 200702 total=520 A 200701 total=504 C 200703 total=380
#include<stdio.h> #include<string.h> struct b { char mz[10]; int xh,c[5],zf; }; //定义结构体 int main() { int n; scanf("%d",&n); struct b a[n],by; for(int i=0;i<n;i++) { scanf("%s%d",&a[i].mz,&a[i].xh); for(int m=0;m<5;m++) scanf("%d",&a[i].c[m]); a[i].zf=a[i].c[0]+a[i].c[1]+a[i].c[2]+a[i].c[3]+a[i].c[4]; } //输入数据 for(int i=0;i<n-1;i++) { int k=i; for(int m=i+1;m<n;m++) { if(a[m].zf>=a[i].zf) k=m; } by.zf=a[i].zf; a[i].zf=a[k].zf; a[k].zf=by.zf; by.xh=a[i].xh; a[i].xh=a[k].xh; a[k].xh=by.xh; strcpy(by.mz,a[i].mz); strcpy(a[i].mz,a[k].mz); strcpy(a[k].mz,by.mz); } //以总分为标准进行降序排序 for(int i=0;i<n;i++) { //printf("%d ",i+1);————(排名) printf("%s %d total=%d\n",a[i].mz,a[i].xh,a[i].zf); } //按要求输出 return 0; }
萌新上路,单纯分享自己学习时做到的题目,欢迎各位大神指正