本题要求实现一个函数,计算学生平均成绩并输出。要求:输入m个学生(0<m≤30)n门课程(0<n≤ 5)的成绩,然后调用函数计算并输出每个学生各门课的平均分。 函数接口定义: void Score_Avg(int (*p)[N], int m, int n); 其中:p为指向学生成绩数组的指针,m和n依次是学生人数、课程数。 裁判测试程序样例: #include <stdio.h> #define M 30 #define N 5 void Score_Avg(int (*p)[N], int m, int n); int main() { int score[M][N], m, n, i, j; scanf("%d%d", &m, &n); //输入学生数和课程数 for(i = 0; i<m; i++) for(j = 0; j<n; j++) scanf("%d", &score[i][j]); Score_Avg(score, m, n); //计算并输出学生平均分 return 0; } /* 你的代码将被嵌在这里 */ 输入格式: 学生数m 课程数n 学生1课程1分数 学生1课程2分数 ... 学生1课程n分数 学生2课程1分数 学生2课程2分数 ... 学生2课程n分数 .….. 学生m课程1分数 学生m课程2分数 ... 学生m课程n分数 输出格式: 学生1的平均分(实数,保留1位小数。下同) 学生2的平均分 .….. 学生m的平均分 输入样例: 2 3 61 62 70 75 82 90 输出样例: 64.3 82.3
时间: 2024-03-30 07:36:42 浏览: 170
根据题目要求,我们可以编写如下代码实现所需功能:
```c
#include <stdio.h>
#define M 30
#define N 5
void Score_Avg(int (*p)[N], int m, int n);
int main() {
int score[M][N], m, n, i, j;
scanf("%d%d", &m, &n);
for (i = 0; i < m; i++) {
for (j = 0; j < n; j++) {
scanf("%d", &score[i][j]);
}
}
Score_Avg(score, m, n);
return 0;
}
void Score_Avg(int (*p)[N], int m, int n) {
int i, j, sum;
double avg;
for (i = 0; i < m; i++) {
sum = 0;
for (j = 0; j < n; j++) {
sum += p[i][j]; // 计算每个学生的总分数
}
avg = sum * 1.0 / n; // 计算每个学生的平均分数
printf("%.1f\n", avg); // 输出每个学生的平均分数
}
}
```
在这段代码中,我们首先定义了一个 `Score_Avg` 函数,用于计算学生的平均分数。该函数接收指向学生成绩数组的指针 `p`、学生人数 `m` 和课程数 `n` 作为参数。在函数中,我们使用两个 `for` 循环遍历每个学生的每门课程,计算每个学生的总分数,然后根据总分数计算出每个学生的平均分数,并输出到屏幕上。
在 `main` 函数中,我们首先读入学生人数 `m` 和课程数 `n`,然后使用两个 `for` 循环读取每个学生的每门课程的成绩,并将其保存在 `score` 数组中。最后,我们调用 `Score_Avg` 函数计算学生的平均分数,并输出到屏幕上。
输入样例:
```
2 3
61 62 70
75 82 90
```
输出样例:
```
64.3
82.3
```
阅读全文