有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出来求3门课每门课程的平均分,以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数) 该题要求使用结构体,设计如下: Typedef struct student { Long studentID; Char studentName[20]; Float score[3]; }STUDENT;使用void average(STUDENT * stu_inf,int n,int * ave_course);函数求3门课每门课程的平均分;C语言
时间: 2023-12-15 09:32:03 浏览: 77
代码如下:
```
#include <stdio.h>
#include <string.h>
typedef struct student {
long studentID;
char studentName[20];
float score[3];
float aveScore;
} STUDENT;
void average(STUDENT *stu_inf, int n, float *ave_course) {
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < 3; j++) {
ave_course[j] += stu_inf[i].score[j];
}
}
for (j = 0; j < 3; j++) {
ave_course[j] /= n;
}
}
int main() {
int i, j, max_index = 0;
float ave_course[3] = {0};
STUDENT stu_inf[10];
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号:");
scanf("%ld", &stu_inf[i].studentID);
printf("姓名:");
scanf("%s", stu_inf[i].studentName);
for (j = 0; j < 3; j++) {
printf("请输入第%d门课的成绩:", j + 1);
scanf("%f", &stu_inf[i].score[j]);
}
stu_inf[i].aveScore = (stu_inf[i].score[0] + stu_inf[i].score[1] + stu_inf[i].score[2]) / 3;
if (stu_inf[i].aveScore > stu_inf[max_index].aveScore) {
max_index = i;
}
}
average(stu_inf, 10, ave_course);
printf("3门课每门课程的平均分为:%.2f %.2f %.2f\n", ave_course[0], ave_course[1], ave_course[2]);
printf("最高分的学生的信息为:\n");
printf("学号:%ld\n", stu_inf[max_index].studentID);
printf("姓名:%s\n", stu_inf[max_index].studentName);
printf("3门课的成绩:%.2f %.2f %.2f\n", stu_inf[max_index].score[0], stu_inf[max_index].score[1], stu_inf[max_index].score[2]);
printf("平均分数:%.2f\n", stu_inf[max_index].aveScore);
return 0;
}
```
代码思路:
1. 定义结构体 `STUDENT`,包括学号、姓名、3门课的成绩、平均分数;
2. 定义函数 `average`,求3门课每门课程的平均分;
3. 在 `main` 函数中,从键盘输入10个学生的数据,并计算每个学生的平均分数和最高分的学生的下标;
4. 调用 `average` 函数求3门课每门课程的平均分;
5. 打印出3门课每门课程的平均分,以及最高分的学生的数据。
阅读全文