标题:输入4个数让它们从小到大排列,实在不知道错哪了,请大家来看看
取消只看楼主
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
结帖率:80%
已结贴  问题点数:5 回复次数:5 
输入4个数让它们从小到大排列,实在不知道错哪了,请大家来看看
#include <stdio.h>
#include <conio.h>
int main()
{
 int a,b,c,d,temp;
 printf("请输入四个整数a,b,c,d:\n");
 scanf("%d,%d,%d,%d",&a,&b,&c,&d);
 a=a>b? a:b;
 a=a>c? a:c;
 a=a>d? a:d;
 b=b>c? b:c;
 b=b>d? b:d;
 c=c>d? c:d;
 printf("这四个数从小到大排列为:%d,%d,%d,%d\n",d,c,b,a);
 getch();   
}
可以编译运行,但是结果不对,输入1,2,3,4却得到【这四个数从小到大排列为:4,4,4,4】
请问我错在哪了啊??
搜索更多相关主题的帖子: 纠错 排序 小程序 
2009-08-14 22:05
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
得分:0 
以下是引用凌彬严在2009-8-14 22:17的发言:冒似少了替换时的中转交换处理
你确定需要?a>b? a:b是一个表达式,把它的值赋给a为什么不可以?

是故无贵无贱,无长无少,道之所存,师之所存也
2009-08-14 22:25
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
得分:0 
以下是引用soler在2009-8-14 22:58的发言:回复 3楼 a_ae_e你调试过吗?调试一下你就知道你的问题出现在哪了。a=a>b? a:b;如果a=1,b=2那你的a=2了,原来的1已经被覆盖了。
额额,我都不好意思说我不会调试,不过我已经知道错哪了 我令a=1,b=2,c=3,d=4,结果从小到大排列却得到4,4,4,4是这样子的:a=a>b? a:b;/*a=2,b=2*/a=a>c? a:c;/*a=3,c=3*/a=a>d? a:d;/*a=4,d=4*/b=b>c? b:c;/*b=3,c=3*/b=b>d? b:d;/*b=4,d=4*/c=c>d? c:d;/*c=4,d=4*/谢谢各位的解答!

是故无贵无贱,无长无少,道之所存,师之所存也
2009-08-14 23:26
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
得分:0 
以下是引用UserYuH在2009-8-14 23:44的发言:a=a>b? a:b;先看第一个比较,a=1 b=2,  执行a=a>b? a:b后  a=2,b=2,你没把a的原值1赋回给b,之后比较一错再错了。看得懂?
en,明白了,谢谢!

是故无贵无贱,无长无少,道之所存,师之所存也
2009-08-15 10:17
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
得分:0 
[quote]以下是引用钟科在2009-8-15 00:05的发言:写了个不一样的 你看行不#include  #include  void main() { int a[4],i,j,temp; printf("请输入四个整数\n"); for( i=0;i#include int main(){ int a,b,c,d,temp; printf("请输入四个整数a,b,c,d:\n"); scanf("%d,%d,%d,%d",&a,&b,&c,&d); if(a>b) {  temp=a;  a=b;  b=temp;        } if(a>c) {  temp=a;  a=c;  c=temp;        } if(a>d) {  temp=a;  a=d;  d=temp;        } if(b>c) {  temp=b;  b=c;  c=temp;        } if(b>d) {  temp=b;  b=d;  d=temp;        } if(c>d) {  temp=c;  c=d;  d=temp;        } printf("这四个数从小到大排列为:%d,%d,%d,%d\n",a,b,c,d);  getch();   } 略显长了,但思路清晰。

是故无贵无贱,无长无少,道之所存,师之所存也
2009-08-15 10:28
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
得分:0 
效果怎么是那样,复制一遍:
#include <stdio.h>/*输入4个数,让它们从小到大排列*/
#include <conio.h>
int main()
{
 int a,b,c,d,temp;
 printf("请输入四个整数a,b,c,d:\n");
 scanf("%d,%d,%d,%d",&a,&b,&c,&d);
 if(a>b)
 {
  temp=a;
  a=b;
  b=temp;        
 }
 if(a>c)
 {
  temp=a;
  a=c;
  c=temp;        
 }
 if(a>d)
 {
  temp=a;
  a=d;
  d=temp;        
 }
 if(b>c)
 {
  temp=b;
  b=c;
  c=temp;        
 }
 if(b>d)
 {
  temp=b;
  b=d;
  d=temp;        
 }
 if(c>d)
 {
  temp=c;
  c=d;
  d=temp;        
 }
 printf("这四个数从小到大排列为:%d,%d,%d,%d\n",a,b,c,d);  
 getch();   
}  

是故无贵无贱,无长无少,道之所存,师之所存也
2009-08-15 10:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-282676-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.172936 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved