功能:从键盘输入十个学生的成绩,统计最高分,最低分和平均分。max代表最高分,min代表最低分,avg代表平均分。 请修改下列程序,使其输出正确结果 /***********FOUND***********/ 后是有问题的代码 #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); }
时间: 2023-07-18 16:47:26 浏览: 98
修改后的代码如下:
```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]); // 将“<=”改为“<”,将“a”改为“&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 += a[i];
}
avg /= 10;
printf("max:%.2f\nmin:%.2f\navg:%.2f\n", max, min, avg); // %.2f 表示输出浮点数保留两位小数
return 0;
}
```
原代码存在以下问题:
1. 数组 `a` 的大小为 8,而不是 10;
2. 在输入循环中,`<=` 应改为 `<`,因为数组下标从 0 开始;
3. 在输入循环中,应该使用 `&a[i]` 而不是 `a`,表示将输入的值存储到数组 `a` 的第 `i` 个元素中;
4. 在统计最大值、最小值和平均值时,应该使用 `>` 和 `<`,而不是 `<` 和 `<`;
5. 在计算平均值时,应该除以 10 而不是 9,因为输入了 10 个数;
6. 在输出时,应该使用 `%.2f`,表示输出浮点数保留两位小数。
阅读全文