因为一开始赋值的时候让min=a[0]了,这个时候a里的值还是未初始化的,编译的时候根据编译器的差别可能会报错、给一个随机地址对应的值或者给0,你这编译器就给了个0,也就是说一开始就让min等于0了,所以在后面比较的时候min自己就比你输入的三个数(1)都要小,最后当然会输出0。
解决方法:max和min定义的时候,不要赋值a[0],要么在a接收到第一次输入之后再赋值,要么给max赋值float类型的最小值、min赋值float类型最大值
for(i=0;i<3;i++) scanf........;
max=a[0];min=a[0];
for(i=0;i<3;i++)
{
sum+=a[i];
if.........;
if.........;
}
望采纳!
a[0]还没有值呢,就没赋值给max和min了,数组a会自动随机初始化,说明a[0]被初始化为了0,然后给了max和min,如果你输入的三个数都是负数,max也会错
一开始a[0]没有初始化 一直为0,min也为0 初始化放在scanf后面应该可以 min=a[0];
应该把第一次输入的数放在循环外面,这样先对max和min赋一个初始值,你这样赋值后,max和min都是空,任何一个数肯定比空大,但是不可能比空小吧?就很奇怪这个min相当于空,为啥输出的值还是0.000000而不是一个随机数或null这种