通过上机运行程序开观察运行结果,分析下面程序错误的原因开改工之 #include <stdio.h #define STuD 30 质最多可能的学生人数卖 #define COURSE 5 M最客可能的考试科自数 本 voidTotal(intpScoreintsum[l.foatavernttn void Print(int#pScore,int sum[]floataver[]intmintn) int mainO int nscore[TU][COURSESuSUD] float aver[STuD] sts scanf(wd&m) printfHowmanycoes scanf(md”.&n) printf(Input scores:\n) for(i=0i<mi++) for(j=0:5<n5++) scanf(d.&score[i][5]) 3 Total(score.sumavermn) Print(score,sumaverm return O: void Total(int *pScore.int sum[].float aver[],intm,intn) int i,j for(i=0;i<mi++) sum[i]=0: for(j=0;j<n.j++) sum[i]=sum[i]+pScore[i*n+j] } aver[i]=(float)sum[i]/n; } void Print(int *pScore, int sum[l,float aver[],int m int n) int i,.j; printf(Result:\n) for(i=0,i<mi++) for(j=0;j<nj++) printf("m4d\t",pScore[i*n+j]) printf(%5d\t%6.1fn.suu[i].aver[i])
时间: 2023-12-16 22:05:31 浏览: 216
这段程序的错误原因有以下几点:
1. 头文件 `stdio.h` 的尖括号未闭合,应该为 `#include <stdio.h>`
2. 宏定义 `STuD` 和 `COURSE` 后面的注释符号 `//` 未关闭,应该在注释后面加上 `*/`。
3. 在函数 `Total()` 中,`sum[i]` 的赋值应该为累加运算符 `+=`,而不是赋值运算符 `=`。
4. 在函数 `Total()` 中,计算平均分的语句应该放在第二个 for 循环的外面,否则每个学生的平均分都会被重复计算多次。
5. 在函数 `Print()` 中,`printf` 函数的格式控制字符串中 `m4d` 应该是 `%d`。
6. 在函数 `Print()` 中,`printf` 函数的格式控制字符串中,`suu[i]` 应该是 `aver[i]`。
正确的程序应该为:
```c
#include <stdio.h>
#define STuD 30 // 最多可能的学生人数
#define COURSE 5 // 最可能的考试科目数
void Total(int *pScore, int sum[], float aver[], int m, int n);
void Print(int *pScore, int sum[], float aver[], int m, int n);
int main()
{
int n, score[STuD][COURSE];
float aver[STuD];
printf("How many students? ");
scanf("%d", &n);
printf("Input scores:\n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < COURSE; j++)
{
scanf("%d", &score[i][j]);
}
}
Total(&score[0][0], sum, aver, n, COURSE);
Print(&score[0][0], sum, aver, n, COURSE);
return 0;
}
void Total(int *pScore, int sum[], float aver[], int m, int n)
{
int i, j;
for (i = 0; i < m; i++)
{
sum[i] = 0;
for (j = 0; j < n; j++)
{
sum[i] += pScore[i*n+j];
}
aver[i] = (float)sum[i] / n;
}
}
void Print(int *pScore, int sum[], float aver[], int m, int n)
{
int i, j;
printf("Result:\n");
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%d\t", pScore[i*n+j]);
}
printf("%5d\t%6.1f\n", sum[i], aver[i]);
}
}
```
阅读全文