代码改错#include <stdio.h> int main( ){ int i; /***********FOUND***********/ float a[8],min,max,avg; printf("input 10 score:\n"); for(i=0;i<=9;i++) { /***********FOUND***********/ scanf("%f",a); } max=min=avg=a[0]; for(i=1;i<=9;i++) { /***********FOUND***********/ if(min>a[i]) min=a[i]; if(max<a[i]) max=a[i]; avg=avg+a[i]; } avg=avg/10; printf("max:%f\nmin:%f\navg:%f\n",max,min,avg); return 0; }
时间: 2023-07-01 22:18:11 浏览: 116
以下是改正后的代码:
```c
#include <stdio.h>
int main() {
int i;
float a[10], min, max, avg;
printf("input 10 score:\n");
for (i = 0; i < 10; i++) {
scanf("%f", &a[i]);
}
max = min = avg = a[0];
for (i = 1; i < 10; i++) {
if (min > a[i]) {
min = a[i];
}
if (max < a[i]) {
max = a[i];
}
avg = avg + a[i];
}
avg = avg / 10;
printf("max:%f\nmin:%f\navg:%f\n", max, min, avg);
return 0;
}
```
主要修改了以下几处错误:
1. 数组 a 的大小应该为 10,而非 8;
2. 在循环中应该使用 `<` 而非 `<=`,以免越界;
3. 在循环中应该使用 `&` 取址符号,以便将输入的值存储到数组中;
4. 在计算 `min`、`max` 和 `avg` 时,应该使用数组元素 `a[i]`,而非数组名 `a`。
相关问题
对这段代码进行改错#include <conio.h> #include <stdio.h> #include <stdlib.h> #define N 20 /**********FOUND**********/ void fun( int a, int n ) { int i, j, k, t ; for ( j = 0; j < n-1; j++) { k = j; for ( i = j + 1; i < n ; i++ ) /**********FOUND**********/ if ( a [i] < a[k] ) k = i; t = a[j] ; a[j] = a[k]; a[k] = t; } }
有两处错误需要进行改正:
1. 第一个错误是参数a应该是一个指针类型,而不是一个整型变量。因为如果传递的是一个整型变量,函数内部无法通过指针访问数组元素。因此需要将参数a修改为int a[]或者int *a。
2. 第二个错误是函数定义时缺少了返回值类型,应该将void fun修改为void。
修改后的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#define N 20
void fun(int a[], int n) {
int i, j, k, t;
for (j = 0; j < n-1; j++) {
k = j;
for (i = j + 1; i < n; i++) {
if (a[i] < a[k]) {
k = i;
}
}
t = a[j];
a[j] = a[k];
a[k] = t;
}
}
int main() {
int a[N], i;
for (i = 0; i < N; i++) {
a[i] = rand() % 100;
printf("%d ", a[i]);
}
printf("\n");
fun(a, N);
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
/*改错题:只回答红色字符部分的修改*/ 求一个3*3矩阵第二行元素之和。 #include <stdio.h> int main() {int a[3][3],sum=0; int i,j; for(i=0;i<3;i++) /*found*/ for(j=0;j<=3;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) /*found*/ sum=sum+a[i][i]; printf("he = %d",sum); }
求一个3*3矩阵第二行元素之和。
#include <stdio.h>
int main() {
int a[3][3],sum=0;
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++) // 将 j<=3 修改为 j<3
scanf("%d",&a[i][j]);
for(j=0;j<3;j++) // 将 i 修改为 j
sum=sum+a[1][j]; // 第二行的行下标为 1
printf("he = %d",sum);
}