标题:输入4个数让它们从小到大排列,实在不知道错哪了,请大家来看看
只看楼主
a_ae_e
Rank: 2
来 自:江西泰和
等 级:论坛游民
帖 子:23
专家分:30
注 册:2009-8-12
结帖率:80%
已结贴  问题点数:5 回复次数:11 
输入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
凌彬严
Rank: 1
等 级:新手上路
帖 子:38
专家分:1
注 册:2009-7-13
得分:1 
冒似少了替换时的中转交换处理
2009-08-14 22:17
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
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
得分:4 
回复 3楼 a_ae_e
你调试过吗?调试一下你就知道你的问题出现在哪了。
a=a>b? a:b;
如果a=1,b=2
那你的a=2了,原来的1已经被覆盖了。
2009-08-14 22:58
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
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
得分:0 
a=a>b? a:b;
先看第一个比较,a=1 b=2,  执行a=a>b? a:b后  a=2,b=2,
你没把a的原值1赋回给b,之后比较一错再错了。
看得懂?

努力—前进—变老—退休—入土
2009-08-14 23:44
钟科
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2008-11-22
得分:0 
写了个不一样的 你看行不
#include <stdio.h>
#include <conio.h>
void main()
{
int a[4],i,j,temp;
printf("请输入四个整数\n");
for( i=0;i<4;i++)
 scanf("%d",&a[i]);
for(i=0;i<4;i++)
  for(j=i;j<4;j++)
  {
      if(a[i]>a[j])
      {
          temp=a[i];
           a[i]=a[j];
           a[j]= temp;
      }
  }
printf("这四个数从小到大排列为");
for(i=0;i<4;i++)
printf("%d ",a[i]);  
getch();  
}
2009-08-15 00:05
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.051216 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved