include<stdio.h> int main() { void Clac(float s[],int n,floatave,floatfail); float a[80]; int i,n; floatave=0,fail=0; printf("输入n:"); scanf("%d",&n); printf("输入学生成绩:"); for(i=0;i<n;i++) scanf("%f",&a[i]); Clac(a,n,ave,fail); return 0; } void Clac(float s[],int n,floatave,floatfail) { float *p; float i=0; float sum=0; for(p=s;p<(s+n);p++) sum=sum+(*p); *ave=sum/n; for(p=s;p<(s+n);p++){ if(*p<60) { i++; } } *fail=i/(float)n; printf("输出结果:"); printf("aver=%.2f,fail=%.2f",*ave,*fail); }更正其中的错误,这段代码输出不了ave和fail
时间: 2023-12-03 18:05:42 浏览: 65
这段代码有几个问题需要修正:
1. 在 `main()` 函数中,定义变量 `floatave` 和 `floatfail` 没有赋初值,应该改为 `float ave=0, fail=0;`。
2. 在 `Clac()` 函数中,变量 `floatave` 和 `floatfail` 的传入方式不正确,应该改为指针类型的传入方式,即 `float *ave, *fail`。
3. 在 `Clac()` 函数中,计算平均分和不及格率时,应该使用指针变量 `ave` 和 `fail`,而不是 `*ave` 和 `*fail`。
下面是修改后的代码:
```
#include <stdio.h>
void Clac(float s[], int n, float *ave, float *fail);
int main() {
float a[80], ave = 0, fail = 0;
int i, n;
printf("输入n:");
scanf("%d", &n);
printf("输入学生成绩:");
for (i = 0; i < n; i++)
scanf("%f", &a[i]);
Clac(a, n, &ave, &fail);
printf("输出结果:");
printf("aver=%.2f,fail=%.2f", ave, fail);
return 0;
}
void Clac(float s[], int n, float *ave, float *fail) {
float *p;
float i = 0, sum = 0;
for (p = s; p < (s + n); p++)
sum += (*p);
*ave = sum / n;
for (p = s; p < (s + n); p++) {
if (*p < 60) {
i++;
}
}
*fail = i / (float)n;
}
```
这样就能够输出正确的平均分和不及格率了。
阅读全文