C语言 输入4个整数,按要求从小到大的顺序输出 ,我写的程序哪里有问题?

2024-11-23 00:19:05
推荐回答(4个)
回答(1):

亲,哪有你这样比较的。首先是输入4个整数,您直接定义成float浮点型,这就不对。最好是把这些数装入一个数组内,再排序。

int main()
{
    int a[4];
    int tmp,count,i_count;
    scanf("%d,%d,%d,%d", &a[0], &a[1], &a[2], &a[3]);  
    for(count = 0, count < 3, count++)
    {
        for(i_count = 0;i_count < 3-count; i_count++)
        {
            if(a[i_count]>a[i_count+1])
            {
                 tmp = a[i_count];
                 a[i_count] = a[i_count+1];
                 a[i_count+1] = tmp;
             }
     }
    
    
    for(count = 0; count < 4; count++)
    {
        printf("%d\n",a[count]);
    }
    
    return;
}

回答(2):

逻辑有漏洞。a>b、a>c、a>d成立时都有交换这没错,但某一项不满足呢?比如a>c不满足,那就是c<=a,可是后面再也没有出现对a怎么处理。参与比较的数多于3个这样就不好处理了,还是用数组存储,排序比较好。

回答(3):

用循环结构比较,不要用这样傻的方法,参考一下
#include

int main()
{
int a[4],i,t=0;
for(i=0;i<=3;i++)
scanf("%d",&a[i]);
for(i=0;i<=3;i++)
{
if(a[i]>=a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
for(i=0;i<=3;i++)
printf("%d\t",a[i]);
return 0;

}

回答(4):

#include
void main()
{
float a,b,c,d,t;
printf("Please input four integer:");
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(a>d)
{
t=a;
a=d;
d=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
if(b>d)
{
t=b;
b=d;
d=t;
}
if(c>d)
{
t=c;
c=d;//这里改了
d=t;//这里改了
}
printf("%f,%f,%f,%f\n",a,b,c,d);
}