首页 > 用户发贴区 > 编程问题提问区 > 关于大小排序的问题
2008
09-02

关于大小排序的问题

#include<stdio.h>
void main()
{
 int a,b,c,d,t;
 scanf(“%d,%d,%d,%d”,&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(“%d,%d,%d,%d”,a,b,c,d);
}


请问我这个程序有错吗,为什么输进数去运行出来的全是很小很小的负数,这是把四个整数按小到大的顺序排列


关于大小排序的问题》有 7 条评论

  1. xflyer 说:

    我运行了一下对着呢,记得输入时用逗号隔开

  2. m13554550158 说:

    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;}
      

    貌似不需要用花括号    然后中间用逗号隔开

     

  3. m13554550158 说:

    大致看了下可以改    {t=c;c=d;d=t;}   为t=c,c=d,d=t;这样形式   这样清楚些

    如果不能运行你再跟帖

  4. Super龙 说:

    这样多麻烦啊,直接用if—else循环多好

     

  5. whsjxiong 说:

    我的改法为:

    #include<stdio.h>

    #define M 4

    main()

    {

    int num[M];

    int i,j;

    printf(“please enter your integer number:\n”);

    for (j=0; j<M; j++)

    {

      for (i=0; i<M-j; i++)

      {

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

       {

      temp =num[i];

      num[i] = num[i+1];

      num[i+1] = temp;

       }

      }

    }

     printf(“the sorted numbers:\n”);

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

     {

     printf(“%d”,num[i]);

     }

    }

    这样在判断3个数顺序时具有可扩充性!!

  6. Linda 说:

    呵呵,谢谢大家的回复

  7. Linda 说:

    whsjxiong:

       你好,谢谢你的程序,不过你看看你的程序里的temp是不是应该定义一下

留下一个回复