本题要求实现一个函数,使用数组指针作函数参数,进行学生成绩的输入和统计输出。要求如下:输入m个学生(最多30人)n门课程(最多5门)的成绩,然后计算并打印每个学生各门课的总分和平均分。
时间: 2024-02-20 22:56:38 浏览: 95
好的,我来为您解答这个问题。以下是一个示例的函数实现:
```c
#include <stdio.h>
void calcScore(int m, int n, double (*scores)[n]) {
double sum, avg;
for (int i = 0; i < m; i++) {
sum = 0;
for (int j = 0; j < n; j++) {
sum += scores[i][j];
}
avg = sum / n;
printf("学生%d的总分为%.1f,平均分为%.1f\n", i + 1, sum, avg);
}
}
```
其中,`m`表示学生数,`n`表示课程数,`scores`是一个指向`double`类型二维数组的指针,每行代表一个学生的各科成绩。在函数内部,我们使用两个嵌套的循环,遍历整个数组,计算每个学生的总分和平均分,并输出到控制台。
在主函数中,您可以先声明一个二维数组,然后将其传递给`calcScore`函数:
```c
int main() {
// 声明一个二维数组,存储各学生各科成绩
double scores[30][5];
int m, n;
printf("请输入学生数(最多30人):");
scanf("%d", &m);
printf("请输入课程数(最多5门):");
scanf("%d", &n);
printf("请输入每个学生的各门课成绩:\n");
for (int i = 0; i < m; i++) {
printf("学生%d:\n", i + 1);
for (int j = 0; j < n; j++) {
scanf("%lf", &scores[i][j]);
}
}
// 调用函数,计算成绩并输出
calcScore(m, n, scores);
return 0;
}
```
在主函数中,我们先读取用户输入的学生数和课程数,然后再使用两个嵌套的循环,读取每个学生的各科成绩,最后将二维数组`scores`传递给`calcScore`函数进行计算和输出。
希望这个函数实现能够对您有所帮助!
阅读全文