| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4730 人关注过本帖
标题:求助:关于三个数按大小顺序输出的问题
只看楼主 加入收藏
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
 问题点数:0 回复次数:9 
求助:关于三个数按大小顺序输出的问题

#include <stdio.h>

void main() { int a,b,c,n; scanf("%d %d %d",&a,&b,&c);

if(a>=b && b>=c) n=0; if(a>=c && c>=b) n=1; if(b>=a && a>=c) n=2; if(b>=c && c>=a) n=3; if(c>=a && a>=b) n=4; if(c>=b && b>=a) n=5; switch(n) { case 0: printf("%d,%d,%d\n",a,b,c); break; case 1: printf("%d,%d,%d\n",a,c,b); break; case 2: printf("%d,%d,%d\n",b,a,c); break; case 3: printf("%d,%d,%d\n",b,c,a); break; case 4: printf("%d,%d,%d\n",c,a,b); break; case 5: printf("%d,%d,%d\n",c,b,a); } } 上面是我写的关于三个数按大小顺序输出的程序。在我想来根据&&的用法应该得不到正确答案的。可是我在TC上运行,输入2 1 3 ,居然得到了正确答案3 2 1 。想知道为什么,谢谢!

搜索更多相关主题的帖子: 顺序 break case 
2005-07-13 20:21
牛虻
Rank: 1
等 级:新手上路
威 望:1
帖 子:472
专家分:0
注 册:2004-10-1
收藏
得分:0 
怎么得不出正确答案拉?
说说你对这个问题的看法或者你说说为什么用if( &amp;&amp; )得不出正确答案.

土冒
2005-07-13 22:49
magic475
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2005-1-14
收藏
得分:0 
我弄错了,不好意思。3Q!

结帖!
2005-07-14 12:18
georgezf
Rank: 1
等 级:新手上路
帖 子:275
专家分:0
注 册:2004-11-20
收藏
得分:0 
你这个排序方法太麻烦,如果规模变大的话就很麻烦了,建议用冒泡排序法

2005-07-14 20:28
wds1981521
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2005-7-15
收藏
得分:0 
不至于这么复杂吧~~~~~
main()
{int a,b,c,t
scanf("a,b,c,",&amp;a,&amp;b,&amp;c);
if(a&gt;=b)
t=a;a=b;b=t;
if(b&gt;=c)
t=b;b=c;c=t;
if(a&gt;=c)
t=a;a=c;c=t;
printf("a,b,c,"a,b,c);
}
好长时间没用了有点忘了,有错大家给改改。

2005-07-15 15:51
袋鼠
Rank: 1
等 级:新手上路
帖 子:40
专家分:0
注 册:2005-7-19
收藏
得分:0 
这个呢:

void swap(int a, int b)
 {
   int t;
   t=a;a=b;b=a;
 }

main()
{
  int a,b,c;

  clrscr();
  printf("Input the three number:\n");
  scanf("%d%d%d",&amp;a,&amp;b,&amp;c);
  
  if(a&gt;b)swap(a,b);
  if(a&gt;c)swap(a,c);
  if(b&gt;c)swap(b,c);

  printf("The new order is : %d%d%d\n",a,b,c);
  getch();
}

为什么输入9 5 6,输出还是9 5 6
???

爱编程,爱生活
2005-07-25 10:07
天空之城
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-6-25
收藏
得分:0 
就只说最主要的问题吧
函数参数是区分为传值和传址两种方式
其中传值是把变量或者常数的值传递给函数,但是原来的变量的值是不会被函数所改变的
传址就不一样了,函数能通过修改变量所在的内存地址的数据从而达到修改原来变量的值的目的
所以,你这个程序改变为这样才对

void swap(int *a, int *b)
{
    int t;
        t=*a;
        *a=*b;
        *b=t;
}


main()
{
    int a,b,c;
        printf("Input the three number:\n");
        scanf("%d,%d,%d",&amp;a,&amp;b,&amp;c);
  
        if(a&gt;b)swap(&amp;a,&amp;b);
        if(a&gt;c)swap(&amp;a,&amp;c);
        if(b&gt;c)swap(&amp;b,&amp;c);

        printf("The new order is : %d,%d,%d\n",a,b,c);
        getch();
}

天空之城...
2005-07-25 22:47
天空之城
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2005-6-25
收藏
得分:0 
输入 1,80,20
输出 1,20,80

天空之城...
2005-07-25 22:48
kisco
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-31
收藏
得分:0 
回复 6楼 袋鼠
if(a&gt;=b)
a&gt;=b  这事什么意思啊?有这种表示吗?小弟新手
2012-03-31 23:49
kisco
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2012-3-31
收藏
得分:0 
我这样弄的
#include<stdio.h>
void aaa(int *m,int *n)
{
    int p;
    p=*m;*m=*n;*n=p;
}
main()
{
int a,b,c;
bool j;
scanf("%d%d%d",&a,&b,&c);
do
{
    if(a<b) aaa(&a,&b);
    if(b<c) aaa(&b,&c);
    if(a<c) aaa(&a,&c);
    j=(a>b&&b>c);
}while(!j);
printf("%d,%d,%d\n",a,b,c);
}
2012-03-31 23:50
快速回复:求助:关于三个数按大小顺序输出的问题
数据加载中...
 
   



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

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