c语言实现学生成绩分析系统的模拟程序项目。要求: 函数input_s() 实现输入10位学生5门课程的成绩; 函数average_s() 实现计算每位学生的平均分; 函数average_c() 实现计算每门课程的平均分; 函数highest() 找出每门课程最高分所对应的学生。 在主函数中分别调用这四个子函数。
时间: 2024-03-01 07:51:42 浏览: 89
好的,我明白了。以下是一个简单的实现,希望对你有所帮助:
```c
#include <stdio.h>
#define N 10 // 学生数
#define M 5 // 课程数
int scores[N][M]; // 保存学生成绩
// 输入学生成绩
void input_s() {
printf("请输入每位学生的五门课程成绩:\n");
for (int i = 0; i < N; i++) {
printf("第%d位学生:", i + 1);
for (int j = 0; j < M; j++) {
scanf("%d", &scores[i][j]);
}
}
printf("输入成功!\n");
}
// 计算每位学生的平均分
void average_s() {
double avg;
for (int i = 0; i < N; i++) {
int sum = 0;
for (int j = 0; j < M; j++) {
sum += scores[i][j];
}
avg = (double)sum / M;
printf("第%d位学生的平均分为:%.2f\n", i + 1, avg);
}
}
// 计算每门课程的平均分
void average_c() {
double avg;
for (int j = 0; j < M; j++) {
int sum = 0;
for (int i = 0; i < N; i++) {
sum += scores[i][j];
}
avg = (double)sum / N;
printf("第%d门课程的平均分为:%.2f\n", j + 1, avg);
}
}
// 找出每门课程最高分所对应的学生
void highest() {
int max;
for (int j = 0; j < M; j++) {
max = scores[0][j];
for (int i = 1; i < N; i++) {
if (scores[i][j] > max) {
max = scores[i][j];
}
}
printf("第%d门课程最高分为:%d,对应的学生为:", j + 1, max);
for (int i = 0; i < N; i++) {
if (scores[i][j] == max) {
printf("%d ", i + 1);
}
}
printf("\n");
}
}
int main() {
input_s();
printf("\n");
average_s();
printf("\n");
average_c();
printf("\n");
highest();
return 0;
}
```
这里使用了一个二维数组 `scores` 来保存学生成绩,其中第一维表示学生编号,第二维表示课程编号。在 `input_s()` 函数中,我们使用两个嵌套的循环来输入每个学生的成绩。在 `average_s()` 和 `average_c()` 函数中,我们同样使用嵌套的循环来计算每位学生和每门课程的平均分。最后,在 `highest()` 函数中,我们也使用了嵌套的循环来找出每门课程最高分所对应的学生。
注意,这里只是一个简单的实现,可能还有很多需要改进的地方,比如输入的成绩是否合法等等。
阅读全文