#include "stdio.h" #define N 5/* 假设只有5个同学*/ void main() {int i,j; struct student {char id[6]; char name[10]; int m1,m2,m3; float sum,avg; }stu1[N],t; printf(" 学生成绩单制作\n\n请输入5位学生学号、姓名及三科成绩的信息:\n"); for(i=0;i<N;i++) scanf("%s%s%d%d%d",stu1[i].id,stu1[i].name,&stu1[i].m1,&stu1[i].m2,&stu1[i].m3); for(i=0;i<N;i++) {stu1[i].sum=stu1[i].m1+stu1[i].m2+stu1[i].m3; stu1[i].avg=stu1[i].sum/3.0;} for(i=0;i<N-1;i++) for(j=0;j<N-i;j++) if(stu1[j].sum<stu1[j+1].sum) {t=stu1[j];stu1[j]=stu1[j+1];stu1[j+1]=t; } printf("排序后的成绩单为:\n"); printf("学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n"); for(i=0;i<N;i++) printf("%s\t%s\t%d\t%d\t%d\t%.1f\t%.1f\n",stu1[i].id,stu1[i].name,stu1[i].m1, stu1[i].m2,stu1[i].m3,stu1[i].sum,stu1[i].avg);}加入注释
时间: 2023-12-12 12:05:18 浏览: 35
下面是添加注释后的代码:
#include "stdio.h"
#define N 5/* 假设只有5个同学*/
void main() {
int i,j;
struct student { // 定义学生结构体
char id[6]; // 学号
char name[10]; // 姓名
int m1,m2,m3; // 三科成绩
float sum,avg; // 总分和平均分
}stu1[N],t;
printf(" 学生成绩单制作\n\n请输入5位学生学号、姓名及三科成绩的信息:\n");
// 循环输入每个学生的信息
for(i=0;i<N;i++) {
scanf("%s%s%d%d%d",stu1[i].id,stu1[i].name,&stu1[i].m1,&stu1[i].m2,&stu1[i].m3);
}
// 计算每个学生的总分和平均分
for(i=0;i<N;i++) {
stu1[i].sum=stu1[i].m1+stu1[i].m2+stu1[i].m3;
stu1[i].avg=stu1[i].sum/3.0;
}
// 使用冒泡排序对学生的总分进行降序排序
for(i=0;i<N-1;i++) {
for(j=0;j<N-i;j++) {
if(stu1[j].sum<stu1[j+1].sum) {
t=stu1[j];
stu1[j]=stu1[j+1];
stu1[j+1]=t;
}
}
}
// 输出排序后的成绩单,包含每个学生的学号、姓名、三科成绩、总分和平均分
printf("排序后的成绩单为:\n");
printf("学号\t姓名\t数学\t语文\t英语\t总分\t平均分\n");
for(i=0;i<N;i++) {
printf("%s\t%s\t%d\t%d\t%d\t%.1f\t%.1f\n",stu1[i].id,stu1[i].name,stu1[i].m1,stu1[i].m2,stu1[i].m3,stu1[i].sum,stu1[i].avg);
}
}