c语言有八个学生,每个学生包括学号,姓名,5门课的成绩,从键盘输入5个学生数据,要求输出5个学生4门课总成绩和每门课的平均分,以及每个学生未达到平均分的课程数和每门课没达到平均分的人数
时间: 2024-01-03 20:04:19 浏览: 85
好的,这是一道C语言的编程问题。首先,我们可以定义一个结构体来存储每个学生的数据:
```
struct student {
int id; // 学号
char name[20]; // 姓名
float score[5]; // 5门课的成绩
};
```
然后,我们可以定义一个包含5个学生的数组,并从键盘输入每个学生的数据:
```
int main() {
struct student stu[5];
for (int i = 0; i < 5; i++) {
printf("请输入第%d个学生的学号、姓名和5门课的成绩:\n", i+1);
scanf("%d %s %f %f %f %f %f", &stu[i].id, stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2], &stu[i].score[3], &stu[i].score[4]);
}
```
接下来,我们可以计算每个学生的4门课总成绩和每门课的平均分,并输出结果:
```
float avg[5] = {0}; // 每个学生4门课的平均分
float sum[4] = {0}; // 每门课的总成绩
int cnt[4] = {0}; // 每门课没达到平均分的人数
for (int i = 0; i < 5; i++) {
float s = 0; // 当前学生4门课的总成绩
for (int j = 0; j < 5; j++) {
if (j != 2) { // 第3门课不计入总成绩
s += stu[i].score[j];
sum[j] += stu[i].score[j];
}
}
avg[i] = s / 4; // 计算当前学生的平均分
printf("学生%d的4门课总成绩为%.1f,平均分为%.1f\n", i+1, s, avg[i]);
}
for (int i = 0; i < 4; i++) {
float a = sum[i] / 5; // 当前课程的平均分
printf("第%d门课的平均分为%.1f,未达到平均分的人数为:", i+1, a);
for (int j = 0; j < 5; j++) {
if (stu[j].score[i] < a) {
cnt[i]++;
printf("%s ", stu[j].name);
}
}
printf("(%d人)\n", cnt[i]);
}
}
```
这样,我们就完成了对题目的要求的实现。完整代码如下:
阅读全文