下列程序的功能是求某班40个学生某课程的平均分(每个学生的成绩均为整数),但存在一些错误。程序中已标明错误所在的行。请改正程序中的错误,使它能得出正确的结果,上机调试后将错误所在行的正确写法填写在指定位置。 #include <stdio.h> void average(int x[],int n) //Error11 { float sum; //Error12 for(int i=0;i<=n;i++) //Error13 sum+=x[i]; return sum/n; } void main( ) { int a[40], i; float mean; for(i=0;i<40;i++) scanf(“%d”, a[i]); //Error14 mean=average(int a[],40); //Error15 printf("\n The result is %f \n",mean); }
时间: 2023-12-03 18:42:37 浏览: 61
编写程序,输入并保存5名学生的信息,计算出平均分,再按照成绩从高到低的顺序输出他们的信息。学生信息包括:学号、姓名、成绩。
改正后的程序如下:
```c
#include <stdio.h>
float average(int x[], int n) {
float sum = 0; // 修改1:初始化 sum 为 0
for (int i = 0; i < n; i++) { // 修改2:循环条件应为 i < n
sum += x[i];
}
return sum / n;
}
int main() { // 修改3:main 函数返回 int 类型
int a[40], i;
float mean;
for (i = 0; i < 40; i++) { // 修改4:循环条件应为 i < 40,同时添加循环体的大括号
scanf("%d", &a[i]); // 修改5:读入 a[i] 的地址应为 &a[i]
}
mean = average(a, 40); // 修改6:调用函数时应直接传入数组名
printf("\n The result is %f \n", mean);
return 0; // 修改7:main 函数应该返回 0
}
```
错误所在行的正确写法分别是:
- Error11:应该修改函数名为 `average`,并且修改函数返回值类型为 `float`。
- Error12:应该在函数内部初始化 `sum` 为 0。
- Error13:循环条件应该为 `i < n`,因为数组下标从 0 开始,所以当 `i = n` 时,访问的是数组外的内存。
- Error14:应该将读入语句改为 `scanf("%d", &a[i]);`,因为需要读入的是 `a[i]` 的地址。
- Error15:调用函数时应该直接传入数组名 `a`,而不是 `int a[]`。
阅读全文