c语言 求平均成绩最低成绩 和最高成绩

#include <stdio.h>
float Max,Min;
float average(float a[],int n)
{int i;
float aver,sum=0;
Max=Min=a[0];
for(i=0;i<n;i++)
{if(a[i]>Max)
Max=a[i];
else if(a[i]<Min)
Min=a[i];
sum+=a[i];
}
aver=sum/n;
return(aver);
}
void main()
{int i;
float a[5],aver;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
aver=average(a,5);
printf("max=%d,min=%d,aver=%3.2f\n",Max,Min,aver);
}
哪里不对 怎么不是输出我想要的结果

这个程序有两个同样错误,就是输入与输出时数据的格式与原来的不同。
1、scanf("%d",&a[i]);因为a[5]的类型是float,所以输入时应是
scanf("%f",&a[i]);即是把整型"%d"改为"%f";
2、printf("max=%d,min=%d,aver=%3.2f\n",Max,Min,aver);
max=%d,min=%d,aver=%3.2f 改为 max=%f,min=%f,aver=%.2f就可以了。
aver=%3.2f 改为 aver=%.2f限制小数部分就可以了,不用限制整数部分。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-06
#include <stdio.h>
float Max,Min;
float average(float a[],int n)
{int i;
float aver,sum=0;
Max=Min=a[0];
for(i=0;i<n;i++)
{if(a[i]>Max)
Max=a[i];
else if(a[i]<Min)
Min=a[i];
sum+=a[i];
}
aver=1.0*sum/n;
return(aver);
}
void main()
{int i;
float a[5],aver;
for(i=0;i<5;i++)
scanf("%f",&a[i]);
aver=average(a,5);
printf("max=%f,min=%f,aver=%3.2f\n",Max,Min,aver);
}

注意格式
第2个回答  2010-06-06
#include <stdio.h>
float Max,Min;
float average(float a[],int n)
{
int i;
float aver,sum=0;
Max=Min=a[0];
for (i=0;i<n;i++)
{
if (a[i]>Max)
Max=a[i];
else if (a[i]<Min)
Min=a[i];
sum+=a[i];
}
aver=sum/n;
return(aver);
}
main()
/*return有返回值,所以main前面的void是不能用 */
{
int i;
float a[5],aver;
for (i=0;i<5;i++)
scanf("%f",&a[i]);
aver=average(a,5);
printf("max=%3.2f,min=%3.2f,aver=%3.2f\n",Max,Min,aver);
/*你定义实型,在这里却用了整型的输出*/
}
相似回答