C语言程序设计 学生选课记录由学号、课程号、成绩组成,将学生选课记录存放在结构体数组中。请编程求出每门课程的平均分。要求:选课记录数、选课记录均由键盘输入。
时间: 2023-12-30 19:01:51 浏览: 118
好的,这是一个比较典型的结构体数组的问题。您可以尝试以下代码:
```c
#include <stdio.h>
struct Record {
int student_id;
int course_id;
int score;
};
int main() {
int n; // 学生选课记录数
printf("请输入学生选课记录数:");
scanf("%d", &n);
struct Record records[n]; // 学生选课记录结构体数组
// 读取学生选课记录
for (int i = 0; i < n; i++) {
printf("请输入第 %d 条学生选课记录(学号 课程号 成绩):", i+1);
scanf("%d %d %d", &records[i].student_id, &records[i].course_id, &records[i].score);
}
// 计算每门课程的平均分
int course_count = 0;
int course_ids[n];
float course_scores[n];
for (int i = 0; i < n; i++) {
int course_id = records[i].course_id;
int found = 0;
for (int j = 0; j < course_count; j++) {
if (course_ids[j] == course_id) {
course_scores[j] += records[i].score;
found = 1;
break;
}
}
if (!found) {
course_ids[course_count] = course_id;
course_scores[course_count] = records[i].score;
course_count++;
}
}
printf("每门课程的平均分如下:\n");
for (int i = 0; i < course_count; i++) {
float average_score = course_scores[i] / n;
printf("课程 %d 平均分为 %.2f\n", course_ids[i], average_score);
}
return 0;
}
```
这段代码中定义了一个 `Record` 的结构体,其中包含了三个成员变量:学号,课程号,成绩。然后在 `main` 函数中,先读取了学生选课记录数量,然后再读取每条学生选课记录的具体信息,并存入结构体数组中。接着,我们使用一个循环遍历每条学生选课记录,计算出每门课程的总成绩,并记录下来每门课程出现的次数。最后,再根据每门课程的总成绩和出现次数,计算出每门课程的平均分,并输出到屏幕上。
阅读全文