在主函数中利用以下3个外部函数,输入N个学生M门课程的成绩,输出每个学生的平均成
时间: 2024-02-11 21:07:37 浏览: 162
好的,我知道你的问题了。以下是一个可能的解决方案:
假设你已经有了3个外部函数:
- `input_grades()`:用于输入N个学生M门课程的成绩。
- `calc_avg()`:用于计算每个学生的平均成绩。
- `output_avg()`:用于输出每个学生的平均成绩。
那么你可以在主函数中按照以下步骤使用这些函数:
1. 首先,你需要输入学生数量N和课程数量M,这可以在主函数中完成。
2. 然后,调用`input_grades()`函数,输入N个学生M门课程的成绩,并将其存储在一个二维数组中。
3. 接下来,调用`calc_avg()`函数,计算每个学生的平均成绩,并将其存储在一个一维数组中。
4. 最后,调用`output_avg()`函数,输出每个学生的平均成绩。
代码示例:
```c
#include <stdio.h>
// 外部函数声明
void input_grades(int n, int m, int grades[n][m]);
void calc_avg(int n, int m, int grades[n][m], float avg[n]);
void output_avg(int n, float avg[n]);
int main() {
int n, m;
printf("请输入学生数量和课程数量:");
scanf("%d %d", &n, &m);
// 二维数组用于存储成绩
int grades[n][m];
// 一维数组用于存储每个学生的平均成绩
float avg[n];
// 输入成绩
input_grades(n, m, grades);
// 计算平均成绩
calc_avg(n, m, grades, avg);
// 输出平均成绩
output_avg(n, avg);
return 0;
}
void input_grades(int n, int m, int grades[n][m]) {
printf("请输入每个学生的成绩:\n");
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的%d门课程的成绩:\n", i + 1, m);
for (int j = 0; j < m; j++) {
scanf("%d", &grades[i][j]);
}
}
}
void calc_avg(int n, int m, int grades[n][m], float avg[n]) {
for (int i = 0; i < n; i++) {
int sum = 0;
for (int j = 0; j < m; j++) {
sum += grades[i][j];
}
avg[i] = (float) sum / m;
}
}
void output_avg(int n, float avg[n]) {
printf("每个学生的平均成绩为:\n");
for (int i = 0; i < n; i++) {
printf("第%d个学生的平均成绩为%.2f\n", i + 1, avg[i]);
}
}
```
这个程序可以输入任意数量的学生和课程成绩,并计算每个学生的平均成绩。你可以根据需要进行修改和扩展。
阅读全文