c语言有八个学生,每个学生包括学号,姓名,5门课的成绩,从键盘输入5个学生数据,要求输出5个学生4门课总成绩和每门课的平均分,以及每个学生未达到平均分的课程数和每门课没达到平均分的人数
时间: 2024-01-03 20:04:11 浏览: 73
c代码-输入5名学生的分数,并显示出他们的总分和平均分。
好的,这是一个关于C语言的问题,需要编写代码来解决。以下是代码实现:
```c
#include <stdio.h>
#define NUM_STUDENTS 8
#define NUM_COURSES 5
struct Student {
int id;
char name[50];
int scores[NUM_COURSES];
};
int main() {
struct Student students[NUM_STUDENTS];
int total_scores[NUM_COURSES] = {0};
int num_students_below_avg[NUM_COURSES] = {0};
int num_courses_below_avg[NUM_STUDENTS] = {0};
// 输入每个学生的信息
for (int i = 0; i < NUM_STUDENTS; i++) {
printf("请输入第%d个学生的信息:\n", i+1);
printf("学号:");
scanf("%d", &students[i].id);
printf("姓名:");
scanf("%s", students[i].name);
printf("成绩:");
for (int j = 0; j < NUM_COURSES; j++) {
scanf("%d", &students[i].scores[j]);
total_scores[j] += students[i].scores[j];
}
printf("\n");
}
// 计算每门课的平均分和每个学生未达到平均分的课程数
for (int i = 0; i < NUM_COURSES; i++) {
float avg_score = total_scores[i] / (float)NUM_STUDENTS;
printf("第%d门课平均分:%.2f\n", i+1, avg_score);
for (int j = 0; j < NUM_STUDENTS; j++) {
if (students[j].scores[i] < avg_score) {
num_courses_below_avg[j]++;
num_students_below_avg[i]++;
}
}
}
// 输出每个学生4门课总成绩和每门课的平均分
for (int i = 0; i < NUM_STUDENTS; i++) {
int total_score = 0;
for (int j = 0; j < NUM_COURSES; j++) {
total_score += students[i].scores[j];
}
printf("学号:%d,姓名:%s,总成绩:%d,未达到平均分的课程数:%d\n",
students[i].id, students[i].name, total_score, num_courses_below_avg[i]);
}
// 输出每门课没达到平均分的人数
for (int i = 0; i < NUM_COURSES; i++) {
printf("第%d门课没达到平均分的人数:%d\n", i+1, num_students_below_avg[i]);
}
return 0;
}
```
这段代码使用了结构体来表示每个学生的信息,使用数组来存储每门课的总成绩和未达到平均分的人数,分别计算每门课的平均分和每个学生未达到平均分的课程数,并输出每个学生的总成绩和未达到平均分的课程数,以及每门课没达到平均分的人数。
阅读全文