C语言,这个程序能运行,但为什么出来的结果max和min都是0.000000,小弟学了不久,求高人指点谢谢。
#include<stdio.h>voidmain(){floatavemaxmin(floatarr[],intn);floatmax=0.0,min=0.0;floa...
#include<stdio.h>
void main()
{float avemaxmin(float arr[],int n);
float max=0.0,min=0.0;
float s[5],ave;
int j;printf("输入5个元素:");
for(j=0;j<5;j++)
scanf("%d",&s[j]);
ave=avemaxmin(s,5);
printf("max=%f,min=%f,ave=%f\n",max,min,ave);}
float avemaxmin(float arr[],int n)
{int i;float sum=0.0,aver,max=arr[0],min=arr[0];
for(i=0;i<n;i++)
{if(arr[i]>max)max=arr[i];
else if(arr[i]<min)min=arr[i];
sum+=arr[i];}
aver=sum/n;return(aver);} 展开
void main()
{float avemaxmin(float arr[],int n);
float max=0.0,min=0.0;
float s[5],ave;
int j;printf("输入5个元素:");
for(j=0;j<5;j++)
scanf("%d",&s[j]);
ave=avemaxmin(s,5);
printf("max=%f,min=%f,ave=%f\n",max,min,ave);}
float avemaxmin(float arr[],int n)
{int i;float sum=0.0,aver,max=arr[0],min=arr[0];
for(i=0;i<n;i++)
{if(arr[i]>max)max=arr[i];
else if(arr[i]<min)min=arr[i];
sum+=arr[i];}
aver=sum/n;return(aver);} 展开
1个回答
展开全部
(1)scanf("%d",&s[j]);
读操作错误,因为s[]是一个浮点数组,而不是整数,所以scanf的第一个参数不应该是%d
正确的应该改为sanf("%f",&s[j]);
(2)因为max和min都是局部变量,所以在主函数main中的max和min与在avemaxmin中的max和min是完全不同的两个变量,正确的改法,在avemaxmin中加入两个实参max和min
修改如下
读操作错误,因为s[]是一个浮点数组,而不是整数,所以scanf的第一个参数不应该是%d
正确的应该改为sanf("%f",&s[j]);
(2)因为max和min都是局部变量,所以在主函数main中的max和min与在avemaxmin中的max和min是完全不同的两个变量,正确的改法,在avemaxmin中加入两个实参max和min
修改如下
更多追问追答
追问
刚自己发现改了,不是这个问题
追答
还有一处全局变量和局部变量的问题
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询