首页 > 用户发贴区 > 编程问题提问区 > 我程序错哪里了。。。
2009
04-07

我程序错哪里了。。。

#include<stdio.h>
void main()
{
int a,b,c,d,t;
scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);
if(a>b)
t=a;
a=b;
b=t;
else
printf(“%d,%d”,a,b);
if(b>c)
t=b;
b=c;
c=t;


else
printf(“%d,%d”,a,b,c);
if(c>d)
t=c;
c=d;
d=t;
else
printf(“%d,%d”,a,b,c,d);
}


它让4个数字从小到大排列。。。我真不知道我错哪里了。。。


我程序错哪里了。。。》有 8 条评论

  1. shao kai 说:

    你可以使用数组,再用数组排列 会比较简单 ,

  2. diantouxiao 说:

    你的程序的算法思想是错的哦!你看看!
    #include<stdio.h>
    void main()
    {
    int a,b,c,d,t;
    scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);/*格式中带,号,输入时候
    也要,号隔开哦*/
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    else
    {
        printf(“%d,%d”,a,b);
    i}
    f(b>c)/*b>c,那你考虑到了b和a的大小吗?下面情况类似*/
    {
        t=b;
        b=c;
        c=t;
    }
    else
    {
        printf(“%d,%d”,a,b,c);
    }
    if(c>d)
    {
        t=c;
        c=d;
        d=t;
    }
    else
    {
        printf(“%d,%d”,a,b,c,d);
    }
    }

  3. nerissa999 说:

    2楼说的那个方法我没有学过。。。三楼。。。我第一个情况就是考虑的ab的大小啊~~然后如果是a>b那么就两个交换值

  4. Ball 说:

    你的算法真的有问题;用数组来实现你的目的:

    #include <stdio.h>

    void main()
    {
     int n,j,i;
     long a[100],t;
     printf(“enter n :”);
     scanf(“%d”,&n);
     printf(“enter %d number:\n”,n);
     for(j=0;j<n;j++)
     {
      scanf(“%ld”,&a[j]);
     }
        for(j=0;j<n-1;j++)
     {
            for(i=0;i<n-1;i++)
      {
       if(a[i]>a[i+1])
       {
        t=a[i];
        a[i]=a[i+1];
        a[i+1]=t;
       }
      }
     }
     for(i=0;i<n;i++)
     {
      printf(“%ld “,a[i]);
     }
     printf(“\n”);
    }

  5. VIMS 说:

    呃 我也是个菜鸟 也来凑凑热闹哈

    我感觉3楼说的对

    假设4个数为a,b,c,d且a>b>c>d,那么你只是通过交换排了序而

    已没有使用printf()输出

    假设a<b<c<d,那么输出值为a,ba,b,ca,b,c,d

    其他情况类似

    我个人认为如果使用if的话可以使用if的嵌套,至于其他方

    法,呵呵,我很菜想不出来~可以交流下

  6. season 说:

    注意,那个if 控制的代码段,如果是多行的话,就必须使用
    { }括起来,否则,只执行if后的第一个;前的语句。

  7. hiroki 说:

    #include<stdio.h>
    void main()
    {
    int a,b,c,d,t;
    scanf(“%d,%d,%d,%d,%d”,&a,&b,&c,&d,&t);/*格式中带,号,输入时候
    也要,号隔开哦*/
    if(a>b)
    {
        t=a;
        a=b;
        b=t;
    }
    else
    {
        printf(“%d,%d”,a,b);
    i}
    f(b>c)/*b>c,那你考虑到了b和a的大小吗?下面情况类似*/
    {
        t=b;
        b=c;
        c=t;
    }
    else
    {
        printf(“%d,%d”,a,b,c);
    }
    if(c>d)
    {
        t=c;
        c=d;
        d=t;
    }
    else
    {
        printf(“%d,%d”,a,b,c,d);
    }
    }

    我在这里指出你的T只是中间传递变量 没有必要输入数字

  8. hiroki 说:

    还有printf这个函数 输出的时候也是需要把前面的格式转换符写全的 输出四个 写四个

留下一个回复