输入4个整数,要求从小到大的顺序输出。

2025-03-22 21:11:37
推荐回答(3个)
回答1:

你这个中间的if选择语句有问题,是把a的值赋给t,即t=a;

其实你这样太麻烦了,给你一个简单的思路。这四个数可以看做是四个个头不同的人,你只要从左到右两两比较,个头小的人左移,个头高的人右移,最后从左到右输出就好。

四个整数在a[0]到a[3]中:

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

{

k=i;

for(j=i+1;j<4;j++)

if(a[j]>a[k])

k=j;

t=a[k];

a[k]=a[i];

a[i]=t;

}
如此,a[0]到a[3]中就是从小到大排好序的了。

回答2:

每次比较完是先把值赋给t而不是把t赋给大的数字
请看下边
#include
int main()
{
int a,b,c,d,t;
printf("请输入四个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(c>d)
{
t=c;
c=d;
d=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(a>b)
{
t=a;
a=b;
b=t;
}
printf("%d,%d,%d,%d\n",a,b,c,d);
return 0;
}

回答3:

你这个方法是对的,但是乍一看不容易理解,再一看是照编的冒泡排序法,就那个a(j)>a(j+1),然后翻译成if语句。只是一定是t=a,不是a=t。这样最后是ab换位。
解释一下:这么多if都是嵌套的,最好用几个空格好看一点,ab换位之后,后面又出现的ab比较,可能是也可能不是原来的ab了,