求C语言高手!指出以下程序的错误并改正,上机把程序调通

下面程序中函数fun 的形参数组s 中传送过来的是80 到89 分的学生成绩,函数fun 的功能是:
统计80 到89 分各分数的人数和此分数段的平均分。
例如:若输入:80 88 81 84 88 84 84 81 88 82 82 –1
则输出应该是:
80:1 81:2
82:2 83:0
84:3 85:0
86:0 87:0
88:3 89:0
average:83.8
注意:用-1 结束输入
#include<stdio.h>
#define N 20
main()
{int s[N], n[10], i=0, a;
float ave;
printf("\nPlease enter the mark:");
scanf("%d", &a);
while(a>0)
{if(a>=80 && a<=89){s[i]=a; i++;}
scanf("%d", &a);
}
ave=fun(s, i, n);
for(i=0; i<10; i+2)
printf("%d:%d %d:%d\n", 80+i, n[i], 81+i, n[i+1]);
printf(“average:%.1f\n”,ave);
}
float fun(int s[N], int n,num[]);
{int k, t,sum=0;
for(k=0; k<n; k++)
{t=s[k]-80; num[t]++;sum+=s[k];}
ave=sum/n;
return(ave);
}

楼主很多符号汉语符号,在编译器上是不允许的……
你的输入也有误: 80 88 81 84 88 84 84 81 88 82 82 -1
你的负号(-1)是中文字符
这是修改之后的代码:
#include<stdio.h>
#define N 20
int main()
{
int s[N],n[10],i=0,a;
float ave;
float fun(int s[N],int n,int *num);
printf("\nPlease enter the mark:");
scanf("%d", &a);
while(a>0)
{
if(a>=80 && a<=89){s[i]=a; i++;}
scanf("%d", &a);
}
ave=fun(s, i, n);
a=i;
for(i=0; i<10; i+=2)
printf("%d:%d %d:%d\n", 80+i, n[i], 81+i, n[i+1]);
printf("average:%.1f\n",ave);
}
float fun(int s[N], int n,int *num)
{
float ave;
int k,t,sum=0;
for(k=0;k<10;k++)
num[k]=0;
for(k=0; k<n; k++)
{t=s[k]-80; num[t]++;sum+=s[k];}
ave=1.0*sum/n;
return(ave);
}
结果:
Please enter the mark:80 88 81 84 88 84 84 81 88 82 82 -1
80:1 81:2
82:2 83:0
84:3 85:0
86:0 87:0
88:3 89:0
average:83.8
请按任意键继续. . .
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-11-28
for(i=0; i<10; i+2)//i=i+2
printf("%d:%d %d:%d\n", 80+i, n[i], 81+i, n[i+1]);
相似回答