下列程序的功能是求某班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); }
时间: 2024-01-22 15:02:39 浏览: 65
以下是修改后的程序:
```
#include <stdio.h>
float average(int x[], int n) {
float sum = 0.0;
for(int i = 0; i < n; i++)
sum += x[i];
return sum / n;
}
int main() {
int a[40], i;
float mean;
for(i = 0; i < 40; i++)
scanf("%d", &a[i]);
mean = average(a, 40);
printf("\n The result is %f \n", mean);
return 0;
}
```
修改说明:
1. 在函数定义时,返回值类型应该为 `float` 而不是 `void`,因为要返回平均值。
2. 在函数中对 `sum` 进行初始化,否则 `sum` 的值是未定义的。
3. 循环条件应该是 `i < n` 而不是 `i <= n`,因为数组下标从0开始,循环到 `n-1` 个元素即可。
4. 在 `scanf` 函数中,应该使用 `&` 来获取输入数据的地址。
5. 在调用 `average` 函数时,应该直接传递数组 `a` 而不是 `int a[]`。
6. 在 `main` 函数中,返回值类型应该是 `int`,并在最后添加 `return 0` 语句。
相关问题
用C语言解决下列问题(4)编写子串查找函数int find_ str(const char* str1, const char* str2),返回str2在str1中的位置。如果str2 在str1中不存在,那么返回-1。如果str2在str1中出现多次,那么以第1改出现为准。使用指针进行编写。 (5)编写程序,将一个NxN的方阵A转置后输出。要求使用二维数组的行指针实现。(6)一个小组有4个学生,每个学生有3门课程:语文、数学、英语的成绩(0~100的整数)。使用4行3列的二维数组存储这些成绩。计算每个学生三门课程的平均成绩并输出(精确到小数点后2位)。要求使用指针进行实现。
(4):
```c
int find_str(const char* str1, const char* str2) {
const char* p1 = str1;
const char* p2 = str2;
int pos = 0;
while (*p1 != '\0') {
if (*p1 == *p2) {
if (*(p2+1) == '\0') {
return pos - strlen(str2) + 1;
}
p2++;
}
else {
p2 = str2;
}
p1++;
pos++;
}
return -1;
}
```
(5):
```c
#include <stdio.h>
void transpose(int (*A)[], int n) {
int temp;
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
temp = *(*(A+i)+j);
*(*(A+i)+j) = *(*(A+j)+i);
*(*(A+j)+i) = temp;
}
}
}
int main() {
int A[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
transpose(A, 3);
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", A[i][j]);
}
printf("\n");
}
return 0;
}
```
(6):
```c
#include <stdio.h>
void average(int (*A)[3], int n) {
for (int i = 0; i < n; i++) {
double sum = 0.0;
for (int j = 0; j < 3; j++) {
sum += *(*(A+i)+j);
}
printf("student %d: %.2lf\n", i+1, sum/3);
}
}
int main() {
int A[4][3] = {{80,90,70},{85,95,75},{90,85,80},{95,80,85}};
average(A, 4);
return 0;
}
```
阅读全文