C语言用三目运算方法给四个数排序怎么做?#include"stdio.h"main(){\x09int a,b,c,d,q;\x09printf("请输入四个数并用逗号隔开:");\x09scanf("%d,%d,%d,%d",&a,&b,&c,&d);\x09q=(b>=a)?a,a=b,b=q:b;\x09q=(c>=a)?a,a=c,c=q:c;\x09q=(d>=a

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/04 15:43:06
C语言用三目运算方法给四个数排序怎么做?#include=a)?a,a=b,b=q:b;\x09q=(c>=a)?a,a=c,c=q:c;\x09q=(d>=a" />

C语言用三目运算方法给四个数排序怎么做?#include"stdio.h"main(){\x09int a,b,c,d,q;\x09printf("请输入四个数并用逗号隔开:");\x09scanf("%d,%d,%d,%d",&a,&b,&c,&d);\x09q=(b>=a)?a,a=b,b=q:b;\x09q=(c>=a)?a,a=c,c=q:c;\x09q=(d>=a
C语言用三目运算方法给四个数排序怎么做?
#include"stdio.h"
main()
{
\x09int a,b,c,d,q;
\x09printf("请输入四个数并用逗号隔开:");
\x09scanf("%d,%d,%d,%d",&a,&b,&c,&d);
\x09q=(b>=a)?a,a=b,b=q:b;
\x09q=(c>=a)?a,a=c,c=q:c;
\x09q=(d>=a)?a,a=d,d=q:d;
\x09q=(c>=b)?b,b=c,c=q:c;
\x09q=(d>=b)?b,b=d,d=q:d;
\x09q=(d>=c)?c,c=d,d=q:d;
\x09printf("%d,%d,%d,%d",a,b,c,d);
}
不知道哪里错了,比如输入"1,2,3,4",会输出"4,-858993460,-858993460,-858993460"

C语言用三目运算方法给四个数排序怎么做?#include"stdio.h"main(){\x09int a,b,c,d,q;\x09printf("请输入四个数并用逗号隔开:");\x09scanf("%d,%d,%d,%d",&a,&b,&c,&d);\x09q=(b>=a)?a,a=b,b=q:b;\x09q=(c>=a)?a,a=c,c=q:c;\x09q=(d>=a
q=(b>=a)?a,a=b,b=q:b;用错了
当b>=a时,执行的是 q = (a,a=b,b=q) 而不是 q = a,a=b,b=q.而(a,a=b,b=q)的值是最后的q的值.所以q = (a,a=b,b=q)的效果等价于 q=q;a=b;b=q; 由于q没有赋值,所以系统默认为-858993460,于是当当b>=a时,a=b了,b=-858993460,q依然=-858993460,于是结果错了.
#include"stdio.h"
main()
{
    int a,b,c,d,q;
    printf("请输入四个数并用逗号隔开:");
    scanf("%d,%d,%d,%d",&a,&b,&c,&d);
    (b>a)?q=a,a=b,b=q:a;   //排序的时候用>、<符号就可以了,更有效率
    (c>a)?q=a,a=c,c=q:a;
    (d>a)?q=a,a=d,d=q:a;
    (c>b)?q=b,b=c,c=q:b;
    (d>b)?q=b,b=d,d=q:b;
    (d>c)?q=c,c=d,d=q:c;
    printf("%d, %d, %d, %d\n",a,b,c,d);
}