用c语言解答:有5个学生,每个学生的数据包括学号、姓名、3门课程的成绩。从键盘输入 10个学生的数据,要求输出3门课程的总平均成绩,以及最高分的学生的学号、姓名、3 门课程成绩、平均分数
时间: 2023-05-31 22:08:03 浏览: 270
。好的,这是一个关于C语言编程的问题。我可以帮您解答。请参考下面的代码:
```
#include <stdio.h>
#include <string.h>
typedef struct{
int num;
char name[20];
float score[3];
float avg;
} student; //定义结构体student
float calc_avg(student *s){
float sum = 0;
for(int i = 0; i < 3; i++){
sum += s->score[i];
}
s->avg = sum / 3;
return sum / 3;
} //计算平均分并返回
int main(){
student s[5], max_s; //定义5个学生的结构体数组和一个最高分的学生的结构体
float sum[3] = {0}, max = 0; //定义3门课程的总分和最高分
for(int i = 0; i < 5; i++){ //循环输入每个学生的数据
printf("请输入第%d个学生的学号、姓名、3门课程的成绩:\n", i+1);
scanf("%d%s%f%f%f", &s[i].num, s[i].name, &s[i].score[0], &s[i].score[1], &s[i].score[2]);
s[i].avg = calc_avg(&s[i]); //计算平均分并保存到结构体中
//累加3门课程的总分
for(int j = 0; j < 3; j++){
sum[j] += s[i].score[j];
}
//寻找最高分的学生
if(s[i].avg > max){
max = s[i].avg;
max_s = s[i];
}
}
//输出3门课程的总平均成绩
printf("3门课程的总平均成绩为:");
for(int i = 0; i < 3; i++){
printf("%.2f ", sum[i]/5);
}
printf("\n");
//输出最高分的学生的信息
printf("最高分的学生的学号、姓名、3门课程成绩、平均分数为:\n");
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n", max_s.num, max_s.name, max_s.score[0], max_s.score[1], max_s.score[2], max_s.avg);
return 0;
}
```
希望这个程序能够帮到您!
阅读全文