#include<stdio.h> //需要引入的文件 //如提示运行通过,但解题失败,认真对比预期输出和实际输出之间的差异 int n; void fun(float a[] ,float *min,float *max,float *aveg) { int i; *min = *max= *aveg = a[0]; for (i=1;i<n;i++) { if(a[i] < *min) { *min=a[i]; } if(a[i]>*max) { a[i]=*max; } *aveg +=a[i]; } *aveg=*ave/n; } int main() { scanf("%d",&n); float a[99]; float aveg, min, max; for (int i = 0; i < n; i++) scanf("%f", &a[i]); fun(a, &max, &min, &aveg); printf("max:%.2f\nmin:%.2f\naveg:%.2f\n", max, min, aveg);//这里被卡输出了 我习惯平均数用avg 题目是aveg //put your codes here. return 0; }
时间: 2023-12-03 18:43:19 浏览: 117
这段代码存在以下错误:
1. 在 `fun` 函数中,最大值的更新语句 `a[i]=*max;` 应该改为 `*max=a[i];`。
2. 在 `fun` 函数中,计算平均数时, `*aveg=*ave/n;` 应该改为 `*aveg=*aveg/n;`。
3. 在 `fun` 函数中,最大值、最小值、平均数的初始化语句 `*min = *max= *aveg = a[0];` 应该放在循环语句之前,否则会出现无法正确计算的问题。
修改后的代码如下:
```
#include <stdio.h>
void fun(float a[], float *min, float *max, float *aveg) {
int i;
*min = *max = *aveg = a[0];
for (i = 1; i < n; i++) {
if (a[i] < *min) {
*min = a[i];
}
if (a[i] > *max) {
*max = a[i];
}
*aveg += a[i];
}
*aveg = *aveg / n;
}
int main() {
int n;
scanf("%d", &n);
float a[99], aveg, min, max;
for (int i = 0; i < n; i++) {
scanf("%f", &a[i]);
}
fun(a, &min, &max, &aveg);
printf("max:%.2f\nmin:%.2f\naveg:%.2f\n", max, min, aveg);
return 0;
}
```
阅读全文