3.有5个学生的数据记录,每个记录包括学号、姓名和3门课的成绩,从键盘输入5个学生的数据,要求输出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名和3门课程成绩、平均分数)。 要求:用一个print函数输出10个学生数据;用一个average函数求总平均分;用max函数找出最高分学生的数据;总平均分和最高分的学生的数据都在主函数中输出。 请使用C++
时间: 2023-06-09 07:06:38 浏览: 127
要求打印出3门课的平均成绩,以及平均成绩最高的学生的数据(包括学号、姓名、3
很高兴回答您的问题!以下是C语言实现的代码,如有需要请参考:
#include <stdio.h>
#include <string.h>
#define NUM 5 // 学生人数
#define COURSES 3 // 课程数
struct Student { // 学生结构体
char id[10]; // 学号
char name[20]; // 姓名
int score[COURSES]; // 成绩
float avg; // 平均分
};
void print_info(struct Student stu[], int n); // 打印学生信息
float average(struct Student stu[], int n); // 求总平均分
struct Student max_score(struct Student stu[], int n); // 找出最高分学生
int main() {
struct Student stu[NUM];
int i, j;
// 输入学生信息
for (i = 0; i < NUM; i++) {
printf("请输入第%d个学生的学号、姓名和3门课的成绩:\n", i + 1);
scanf("%s%s%d%d%d", stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
// 计算平均分
stu[i].avg = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
}
// 输出学生信息
print_info(stu, NUM);
// 求总平均分
printf("3门课的总平均分为%.2f\n", average(stu, NUM));
// 找出最高分学生
struct Student max_stu = max_score(stu, NUM);
printf("最高分学生信息如下:\n");
printf("学号:%s\n姓名:%s\n成绩:%d %d %d\n平均分:%.2f\n", max_stu.id, max_stu.name, max_stu.score[0], max_stu.score[1], max_stu.score[2], max_stu.avg);
return 0;
}
void print_info(struct Student stu[], int n) {
int i, j;
printf("学号\t姓名\t学科1\t学科2\t学科3\t平均分\n");
for (i = 0; i < n; i++) {
printf("%s\t%s\t", stu[i].id, stu[i].name);
for (j = 0; j < COURSES; j++) {
printf("%d\t", stu[i].score[j]);
}
printf("%.2f\n", stu[i].avg);
}
}
float average(struct Student stu[], int n) {
int i, j;
float sum = 0;
for (i = 0; i < n; i++) {
for (j = 0; j < COURSES; j++) {
sum += stu[i].score[j];
}
}
return sum / (n * COURSES);
}
struct Student max_score(struct Student stu[], int n) {
int max_index = 0, i;
for (i = 1; i < n; i++) {
if (stu[i].avg > stu[max_index].avg) {
max_index = i;
}
}
return stu[max_index];
}
阅读全文