有10个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入10个学生数据,要求打印出求3门课每门课程的平均分, 以及最高分的学生的数据(包括学号、姓名、3门课的成绩、平均分数)。 该题要求使用结构体,设计如下: typedef struct student { long studentID[20]; char studentName[20]; float score[3]; }STUDENT;
时间: 2023-12-15 15:31:16 浏览: 77
好的,这是一个基于结构体的学生成绩处理程序的示例代码:
```c
#include <stdio.h>
typedef struct student {
long studentID;
char studentName[20];
float score[3];
float avgScore; // 平均分
}STUDENT;
int main() {
int i, j, highestScoreIndex;
float sumScore[3] = {0};
float highestScore = 0;
STUDENT students[10];
// 输入学生数据
for (i = 0; i < 10; i++) {
printf("请输入第%d个学生的学号、姓名和3门课程的成绩:\n", i+1);
scanf("%ld %s %f %f %f", &students[i].studentID, students[i].studentName, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
// 计算平均分
students[i].avgScore = (students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3.0;
// 计算总分
for (j = 0; j < 3; j++) {
sumScore[j] += students[i].score[j];
}
// 找出最高分的学生
if (students[i].avgScore > highestScore) {
highestScore = students[i].avgScore;
highestScoreIndex = i;
}
}
// 输出每门课的平均分
printf("每门课的平均分为:\n");
for (j = 0; j < 3; j++) {
printf("第%d门课的平均分为:%f\n", j+1, sumScore[j] / 10.0);
}
// 输出最高分的学生的数据
printf("最高分的学生的学号、姓名、3门课的成绩和平均分数为:\n");
printf("%ld %s %f %f %f %f\n", students[highestScoreIndex].studentID, students[highestScoreIndex].studentName, students[highestScoreIndex].score[0], students[highestScoreIndex].score[1], students[highestScoreIndex].score[2], students[highestScoreIndex].avgScore);
return 0;
}
```
这个程序定义了一个名为 `STUDENT` 的结构体,其中包含了学生的学号、姓名、3门课的成绩和平均分。程序使用一个循环来输入10个学生的数据,并计算每个学生的平均分和每门课的总分。在计算平均分和总分的过程中,程序也会找出最高分的学生。
最后,程序输出每门课的平均分和最高分的学生的数据。
阅读全文