按要求完成下面任务程序的编写,调试和运行。 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入5个学生的数据,要求输出3门课总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 要求用一个input函数输入5 个学生数据,用一个average函数求总平均分,用max函数找出最高分学生数据,总平均分和最高分的学生的数据都在主函数中输出。
时间: 2023-12-15 07:21:08 浏览: 134
好的,以下是按照要求完成的C语言程序:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char id[20];
char name[20];
float score1;
float score2;
float score3;
float avg;
} Student;
void input_data(Student data[]) {
for (int i = 0; i < 5; i++) {
printf("请输入学号:");
scanf("%s", data[i].id);
printf("请输入姓名:");
scanf("%s", data[i].name);
printf("请输入第一门课的成绩:");
scanf("%f", &data[i].score1);
printf("请输入第二门课的成绩:");
scanf("%f", &data[i].score2);
printf("请输入第三门课的成绩:");
scanf("%f", &data[i].score3);
}
}
float average(Student data[]) {
float total = 0;
for (int i = 0; i < 5; i++) {
total += data[i].score1 + data[i].score2 + data[i].score3;
}
float avg = total / (5 * 3);
return avg;
}
Student max_score(Student data[]) {
Student max_student = data[0];
float max_score = data[0].score1 + data[0].score2 + data[0].score3;
for (int i = 1; i < 5; i++) {
float score = data[i].score1 + data[i].score2 + data[i].score3;
if (score > max_score) {
max_score = score;
max_student = data[i];
}
}
return max_student;
}
int main() {
Student data[5];
input_data(data);
float avg = average(data);
Student max_student = max_score(data);
printf("3门课的总平均分数为:%.2f\n", avg);
printf("最高分的学生的数据为:\n");
printf("学号:%s\n", max_student.id);
printf("姓名:%s\n", max_student.name);
printf("第一门课的成绩:%.2f\n", max_student.score1);
printf("第二门课的成绩:%.2f\n", max_student.score2);
printf("第三门课的成绩:%.2f\n", max_student.score3);
printf("平均分数:%.2f\n", max_student.avg);
return 0;
}
```
在这个程序中,我们首先定义了一个`Student`结构体,包括学号、姓名、3门课的成绩和平均分数。然后定义了三个函数:`input_data()`用于从键盘输入学生数据,`average()`用于计算3门课的总平均分,`max_score()`用于找出最高分的学生数据。最后在主函数中调用这三个函数,并输出结果。
在`input_data()`函数中,我们使用了一个`for`循环语句,每次循环输入一个学生的数据,将其添加到`data`数组中。
在`average()`函数中,我们使用了一个`for`循环语句和一个累加器计算3门课的总分数,然后除以总的学生数和课程数得到总平均分。
在`max_score()`函数中,我们使用了一个`for`循环语句和一个累加器计算每个学生的总分数,然后找到最高分的学生数据,并将其返回。
最后,在主函数中我们先调用`input_data()`函数获取学生数据,然后调用`average()`函数计算总平均分,调用`max_score()`函数找到最高分学生数据,并输出结果。
阅读全文