猿问

输出最大值和最小值: 从键盘上输入10个数,输出其中最大数与最小的数。

#include<stdio.h>

int main()

{

int a[10],i,t=0;

for(i=0;i<10;i++)

{

scanf("%d",&a[i]);

}

for(i=0;i<10;i++)

{

if(a[i]>a[i+1])

{

t=a[i];

a[i]=a[i+1];

a[i+1]=t;

}

}

printf("%d\n%d\n",a[9],a[0]);

return 0;

 } 

为什么我写的这个程序只要输入的十个数里面有负数的话,输出的最小值却还是正数呢?求各位大神指点!!

例如我输入:1 2 3 4 5 6 7 8 9 -1

输出的最小值却是:1

爷们哈哈哈鲁
浏览 7019回答 5
5回答

慕粉3255273

#include<stdio.h>int main(){int a[10],i,t=0,j;for(i=0;i<10;i++){scanf("%d",&a[i]);}for(j=9;j>=0;j--)for(i=0;i<10;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}printf("%d\n%d\n",a[9],a[0]);return 0; } 你本来根本没有把程序排序,这个排序方法其实是先把最大的放到最后边,然后再把前九个里边最大的放到最后边,在吧前八个里边最大的放到最后边,但是你只做了第一步,也就是把最大的放到后边所以最大的找到了但是最小的根本没找到,你的循环体要运行九次才能找到最小的。另外如果只是为了找最大和最小根本没有必要全部排序,这样对电脑的负担会增大不少。

拒绝伸手党

#include<stdio.h>int main(){int a[10],i,max,min;for(i=0;i<10;i++){scanf("%d",&a[i]);}max = a[1];min=a[1];for(i=0;i<10;i++){if(a[i]>max){max = a[i];} if(a[i]<min){min =a[i];}}printf("%d\n%d\n",max,min);return 0; } 

拒绝伸手党

第二个for循环语句里面的if条件不成立,没有进行t值得更改

慕粉3324679

可能是定义出了问题,输入的时候没有负数好像就可以了。

慕先生2529618

这个for循环不能得到最大值和最小值,你用你自己输入的数去走一遍,根本没有走for循环,没有替换过程,最后输出a【0】当然是1
随时随地看视频慕课网APP
我要回答