| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3181 人关注过本帖
标题:三个数从小到大输出,用函数方式,我哪儿错了
只看楼主 加入收藏
设计大师的路
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2012-12-1
结帖率:76.92%
收藏
已结贴  问题点数:10 回复次数:12 
三个数从小到大输出,用函数方式,我哪儿错了
#include<stdio.h>
int main()
{
    int paixu(int a,int b,int c);
    int a,b,c,pai;
    while(scanf("%d %d %d",&a,&b,&c)!=-1)
    {      
        pai=paixu(a,b,c);   
        printf("%d %d %d\n",paixu(a,b,c));   
    }
    return 0;
}
int paixu
(int a,int b,int c)
{  
    int pai;  
    if(a>b)  
    {
        pai=b;  b=a;  a=pai;
    }
    if (a>c)
    {
        pai=c;  c=a; a=pai;
    }  
    if(b>c)
    {   
        pai=b;b=c;c=pai;
    }   
    printf("%d %d %d\n",a,b,c);  
    return a;
}输入 1 2 3, 输出为 1 2 3换行1 2 3换行 1 0 0
搜索更多相关主题的帖子: include return 
2012-12-01 19:10
上苍之手
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:314
专家分:1451
注 册:2012-11-24
收藏
得分:0 
我这个没有用到函数,楼主借鉴一下吧!!!
#include "stdio.h"
void main()
{
  int a,b,c,t;
  printf("Input a,b,c:");
  scanf("%d%d%d",&a,&b,&c);
  printf("You input:a=%d,b=%d,c=%d\n",a,b,c);
  if(a>b)
      {t=a;a=b;b=t;}
  if(a>c)
      {t=a;a=c;c=t;}
  if(b>c)
      {t=b;b=c;c=t;}
  printf("From small to big is:%5d,%5d,%5d\n",a,b,c);
}

扬起风帆,从此自信远航。。。。。
2012-12-01 19:51
设计大师的路
Rank: 1
等 级:新手上路
帖 子:64
专家分:0
注 册:2012-12-1
收藏
得分:0 
我就要函数的,不要函数的那个我也会啊。
2012-12-01 20:01
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:1 
两个问题:
1.百度一下形参吧,这部分我不会讲,不过很重要
2.printf("%d %d %d\n",paixu(a,b,c));这里肯定错了,输出三个数,就应该个它三个数,你给他一个函数是不对的
printf("%d %d %d\n",a,b,c);


[fly]存在即是合理[/fly]
2012-12-01 20:08
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:6 
printf("%d %d %d\n",paixu(a,b,c))
paixu只返回一个值-a
你用三个格式输出另两个没有返回值,就默认为0了
而前面你调用了两边paixu()函数,所以先出来两次正确的,最后输出main()函数的printf()函数
程序代码:
#include<stdio.h>
int main()
{
    int paixu(int a,int b,int c);
    int a,b,c;
    while(scanf("%d %d %d",&a,&b,&c)!=-1)
    {      
        paixu(a,b,c);  
        break;
    }
    return 0;
}
int paixu
(int a,int b,int c)
{ 
    int pai; 
    if(a>b) 
    {
        pai=b;  b=a;  a=pai;
    }
    if (a>c)
    {
        pai=c;  c=a; a=pai;
    } 
    if(b>c)
    {  
        pai=b;b=c;c=pai;
    }  
    printf("%d %d %d\n",a,b,c); 
    return a;
}

这样就行了

I have not failed completely
2012-12-01 20:10
锋了
Rank: 7Rank: 7Rank: 7
来 自:向日葵幼儿园
等 级:黑侠
威 望:2
帖 子:306
专家分:586
注 册:2012-10-27
收藏
得分:1 
1.你在main函数处定义的那个pai有何用意呢?没用到吧!
 2.printf("%d %d %d\n",paixu(a,b,c));没有这种写法的应该是 printf("%d %d %d\n",a,b,c);
3.我觉得while应该改成
pai=0;
while(pai!=-1)
    {   
        scanf("%d %d %d",&a,&b,&c);   
        pai=paixu(a,b,c);  
    }
    这样可以循环输入,当a<0时退出
2012-12-01 20:24
wwfdzh2012
Rank: 2
等 级:论坛游民
帖 子:88
专家分:27
注 册:2012-11-22
收藏
得分:0 
回复 5楼 神龙赖了
新手想问一下:
while(scanf("%d %d %d",&a,&b,&c)!=-1)
    {      
        paixu(a,b,c);  
        break;
    }
这一段时什么意思?
2012-12-01 20:29
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
while(scanf("%d %d %d",&a,&b,&c)!=-1)
    {      
        paixu(a,b,c);  
        break;
    }

就是检查输入有没有异常
这里我没仔细看,直接复制了楼主的...
k = scanf("%d %d %d",&a,&b,&c);
if(k<3)
{
  printf("read failure!\n");
  return 1;
}
其实这样更正确,因为scanf是按成功读入的次数来当返回值的

I have not failed completely
2012-12-01 20:57
xtjopt
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:89
专家分:168
注 册:2012-9-12
收藏
得分:0 
学习了
把那3个数放进一个数组把,返回一个数组再输出

[ 本帖最后由 xtjopt 于 2012-12-1 21:03 编辑 ]
2012-12-01 20:59
huzhongvc
Rank: 1
等 级:新手上路
帖 子:4
专家分:3
注 册:2012-11-16
收藏
得分:0 
都是高手啊 崇拜
2012-12-01 22:54
快速回复:三个数从小到大输出,用函数方式,我哪儿错了
数据加载中...
 
   



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

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