#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
5 回答
慕粉3255273
TA贡献1条经验 获得超2个赞
#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;
}
你本来根本没有把程序排序,这个排序方法其实是先把最大的放到最后边,然后再把前九个里边最大的放到最后边,在吧前八个里边最大的放到最后边,但是你只做了第一步,也就是把最大的放到后边所以最大的找到了但是最小的根本没找到,你的循环体要运行九次才能找到最小的。另外如果只是为了找最大和最小根本没有必要全部排序,这样对电脑的负担会增大不少。
拒绝伸手党
TA贡献13条经验 获得超10个赞
#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;
}
- 5 回答
- 0 关注
- 7018 浏览
添加回答
举报
0/150
提交
取消