一、题目
要求输入三个学生的班级号、学号和三门课程成绩。(注意:班级号为两位整数)
然后按照班级号从小到大输出;若同一班级的,按照总成绩由高到低输出。
示例:
输入:
11,1001,92.5,82.5,96
12,1004,95.8,85.6,74.9
12,1005,82.5,87.5,93.5
输出:
11,1001,271.0
12,1005,263.5
12,1004,256.3
二、代码
#include <stdio.h>
int main(){
struct score{
int banji,xuehao;
float sum;
float gaoshu,wuli,yingyu;
}stu1,stu2,stu3;
struct score stu[3] = {stu1,stu2,stu3};
int i=0,j=0,k=0;
for(i=0;i<3;i++){
scanf("%d,%d,%f,%f,%f",&stu[i].banji,&stu[i].xuehao,&stu[i].gaoshu,&stu[i].wuli,&stu[i].yingyu);
stu[i].sum=stu[i].gaoshu+stu[i].wuli+stu[i].yingyu;
}
for(j=0;j<3;j++){
for(k=0;k<2;k++){
if(stu[k].banji>stu[k+1].banji){
struct score temp=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp;
}
else if((stu[k].banji==stu[k+1].banji)&&(stu[k].sum<stu[k+1].sum)){
struct score temp2=stu[k];
stu[k]=stu[k+1];
stu[k+1]=temp2;
}
}
}
for(i=0;i<3;i++){
printf("%d,%d,%.1f\n",stu[i].banji,stu[i].xuehao,stu[i].sum);
}
return 0;
}
三、tips
就是在上一章的基础上加了一个同班级比较
利用
else if((stu[k].banji==stu[k+1].banji)&&(stu[k].sum<stu[k+1].sum))
即可完成