C语言用三目运算方法给四个数排序怎么做?
来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/04 17:30:22
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"
#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语言用三目运算方法给四个数排序怎么做?](/uploads/image/z/1340365-13-5.jpg?t=C%E8%AF%AD%E8%A8%80%E7%94%A8%E4%B8%89%E7%9B%AE%E8%BF%90%E7%AE%97%E6%96%B9%E6%B3%95%E7%BB%99%E5%9B%9B%E4%B8%AA%E6%95%B0%E6%8E%92%E5%BA%8F%E6%80%8E%E4%B9%88%E5%81%9A%3F)
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);
}
![](http://img.wesiedu.com/upload/8/8f/88f4a774e90b17542f455b956ddab3dc.jpg)
当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);
}
![](http://img.wesiedu.com/upload/8/8f/88f4a774e90b17542f455b956ddab3dc.jpg)