结构体应用:计算总分及最高分
超详细讲解,超详细讲解,超详细讲解,超详细讲解。
分数 20
全屏浏览题目
切换布局
作者 ww
单位 中国计量大学现代科技学院
本题目要求先输入正整数N,然后输入N个类型为结构体stud的数组元素,计算每个学生的总分,输出每个学生的学号、姓名、三门课的成绩及总分;计算全部成绩的平均分并输出;输出总分最高同学的各项信息。
struct stud {
int num; //学号
char name[10]; //姓名
int score[3]; //3门课成绩
int sum; //总分
};
输入格式:
先输入不超过10的一个正整数N,然后每行输入一个学生的信息(学号、姓名、三门课成绩)。学号在整数范围内,姓名长度小于10个字符。
输出格式:
首先输出每个学生的信息(包括学号、姓名、三门课成绩、总分),数据项之间空1格,每人一行;再输出全部成绩的平均分;最后输出总分最高(假设没有相同总分)同学的学号、姓名、三门课成绩及总分,数据项之间空1格。
输入样例:
在这里给出一组输入。例如:
4
1 张三 81 85 82
2 李四 82 78 74
3 王五 85 74 90
4 赵六 77 85 79
输出样例:
在这里给出相应的输出。例如:
1 张三 81 85 82 248
2 李四 82 78 74 234
3 王五 85 74 90 249
4 赵六 77 85 79 241
总平均分=81.000000
3 王五 85 74 90 249
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
struct Student
{
char num[11]; //学号,最多10个字符
char name[11]; //姓名, 最多10个字符
int s1,s2,s3; //三门课的考试成绩
int total; //总成绩
};
typedef struct Student Student; //声明了一个结构类型Student类型
int main(){
int n,max=0;
double average =0,sum=0;//用sum计算所有学生的所有成绩总和
struct Student s[10];//一共不超过10个结构体
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s %s %d %d %d",&s[i].num,&s[i].name,&s[i].s1,&s[i].s2,&s[i].s3);
/*输入每个结构体中的学号、姓名、三门课的成绩*/
s[i].total=s[i].s1+s[i].s2+s[i].s3;
//因为总分没有输入,所以默认为0,然后将三门成绩相加计算再赋值给s[i].total
if(max<s[i].total)max=s[i].total;//这里是为了得到最高成绩的同学的信息
}
for(int i=0;i<n;i++){
sum+=s[i].total;
printf("%s %s %d %d %d %d\n",s[i].num,s[i].name,s[i].s1,s[i].s2,s[i].s3,s[i].total);
}//先输出每个同学的信息,并且把成绩计算总和
average=sum*1.0/n/3.0;//再计算平均数
printf("总平均分=%.6f\n",average);
for(int i=0;i<n;i++){
if(s[i].total==max)
printf("%s %s %d %d %d %d\n",s[i].num,s[i].name,s[i].s1,s[i].s2,s[i].s3,s[i].total);
}//最后再打印出最高成绩的同学信息即可
return 0;
}