代码改错#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 浏览: 183
以下是改正后的代码:
```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;
}
```
改错#include <stdio.h> int main(void) { int a[5]; int i,k,n,f=0; for(i=0;i<=4;i++) scanf("%d",&a[i]); scanf("%d",&n); for(i=0;i<10;i++) /************found************/ if(___(1)___) { f=1; /************found************/ ___(2)___; } if(f) printf("%d is No. %d\n", n,k); else printf(" %d not found !\n",n); return 0; }
修改后的代码如下:
```c
#include <stdio.h>
int main(void) {
int a[5];
int i,k,n,f=0;
for(i=0;i<=4;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(i=0;i<5;i++) { // 修改1:循环次数应为数组长度5
if(a[i] == n) { // 修改2:判断条件应为a[i] == n
f=1;
k = i + 1; // 修改3:记录下标应为i+1
}
}
if(f)
printf("%d is No. %d\n", n,k);
else
printf("%d not found !\n",n);
return 0;
}
```
修改说明:
1. 修改循环次数为数组长度5;
2. 修改if语句中的判断条件为a[i] == n,判断当前元素是否等于n;
3. 记录下标应为i+1,因为提示的是第几个数,而数组下标从0开始。
阅读全文