c语言 4个整数这为什么不能比6次使从小到大啊 谢谢1!
发布网友
发布时间:2024-09-06 11:55
我来回答
共5个回答
热心网友
时间:2024-09-18 17:16
答案是可以,根据组合关系,C(4,2) = 6。
/* 只是你在交换你的值后还用那个变量,是将6个值都比较了吗? (非此原因)*/
楼上正解,原因为if条件问题a-b 不等同于 a>b。这个陷阱还真没仔细考虑!
你的if中的组合数,aaabbc是六种组合数,是可行的。与之前说的交换值问题无关,
已将24中排列结果读入程序测试。
热心网友
时间:2024-09-18 17:13
下次有时间帮你看看 啊
热心网友
时间:2024-09-18 17:13
冒泡法,注意用好大于号 >
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;}
热心网友
时间:2024-09-18 17:14
void main()
{int a,b,c,d,t;
printf("input:a b c d\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a-b>=0) {t=a;a=b;b=t;}
if(a-c>=0) {t=a;a=c;c=t;}
if(a-d>=0) {t=a;a=d;d=t;}
if(b-c>=0) {t=b;b=c;c=t;}
if(b-d>=0) {t=b;b=d;d=t;}
if(c-d>=0) {t=c;c=d;d=t;}
printf("%d %d %d %d",a,b,c,d);
return ;
}
if中为负 非0也会进入
热心网友
时间:2024-09-18 17:15
去掉printf("input:a b c d\n");试试,a,b,c,d,t最先的值都是垃圾值,
printf("input:a b c d\n");
scanf("%d%d%d%d",&a,&b,&c,&d);
或者将这两行代码交换顺序
你代码写得太不规范了