麻烦帮忙看一下下面的程序,为什么,avg总是等于0.0呀!有谁能帮忙找一下错误吗?先谢谢哈

#include"stdio.h"
int sum(int n, int a[])
{
int i,sum=0;
for(i=0;i<n;i++)
sum+=a[i];
return sum;
}

int max_a(int n,int a[])
{
int i,max=a[0];
for(i=0;i<n;i++)
if(a[0]<=a[i])
max=a[i];
return max;
}

int min_a(int n,int a[])
{
int i,min=a[1];
for(i=0;i<n;i++)
if(a[1]>=a[i])
min=a[i];
return min;
}

float avg(int n,int a[])
{ int i;
float avg,b=0;
{for(i=0;i<n;i++)
b+=a[i];}
avg=b/n;
return avg;
}

void sort(int n,int a[])
{
int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(a[j]>a[j+1])
{t=a[i];a[j]=a[j+1];a[j+1]=t;}

}

int pass(int n,int a[])

{
int i,pass;
pass=0;
for(i=0;i<n;i++)
if(a[i]>=60)
pass++;
return pass;

}

main()

{
int n,a[50],cg=0,i;
float average;
int s,max,min;
printf("即将输入多少个分数:");
scanf("%d",&n);/*输入分数个数n*/
printf("请输入具体分数值");

for(i=0;i<n;i++)/*输入n个分数*/
scanf("%d",&a[i]);

s=sum(n,a);/*求n个分数的和*/
max=max_a(n,a); /*求最大值*/
min=min_a(n,a); /*求最小值*/
average=avg(n,a);/*求平均值*/
sort(n,a);/*排序*/
cg=pass(n,a); /*统计几个的人数*/

printf("Average:%.1f\n",avg);/*输出平均值*/
printf("After sort:");

for(i=0;i<n;i++)
printf("%d ",a[i]);/*输出排序后的分数*/
printf("\nPass:%d",cg);/*输出统计结果,及格人数*/

}

我怀疑 {for(i=0;i<n;i++)
b+=a[i];}
这样写出语句块的形式,里面的代码没有执行到,或者代码块没法改变b的值,你把大括号去掉应该就好了。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-03
sort函数中 {t=a[i];a[j]=a[j+1];a[j+1]=t;}
改为 {t=a[j];a[j]=a[j+1];a[j+1]=t;}
你这个sort不对。

至于平均值的问题,avg是函数,怎么能
printf("Average:%.1f\n",avg)
把avg改成average本回答被提问者采纳
第2个回答  2010-11-03
printf("Average:%.1f\n", average);/*输出平均值*/

这个地方输出的应该是average而不是函数名称 avg 呵呵~
第3个回答  2010-11-03
000000000000000000000000000
相似回答