| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1114 人关注过本帖
标题:那位高手解决一下 错在哪了 谢了
只看楼主 加入收藏
季风老大007
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-11-18
结帖率:0
收藏
已结贴  问题点数:20 回复次数:19 
那位高手解决一下 错在哪了 谢了
#include "stdio.h"
void main()
{
    void w(int a,int b);
    int x,y;
    printf("请输入2个数:");
    scanf("%d,%d",&x,&y);
    if(x>y)
    w( x, y);
    printf("%d %d",x,y);
   
}
  void w(int a,int b)
  {
      int c;
      c=a;
      a=b;
      b=c;
  }
      
      
搜索更多相关主题的帖子: void include 
2012-01-09 17:28
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:1 
#include "stdio.h"
void w(int a,int b);//要在这里

void main()
{
   // void w(int a,int b);//你是声明函数 W吧,,
    int x,y;
    printf("请输入2个数:");
    scanf("%d,%d",&x,&y);
    if(x>y)
    w( &x, &y);
    printf("%d %d",x,y);
   
}
  void w(int* a,int* b)
  {
      int c;
    c=*a;
    *a=*b;
    *b=c;
  }


[ 本帖最后由 cuijingchun 于 2012-1-14 18:49 编辑 ]

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-09 17:51
Iris_
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2011-10-11
收藏
得分:1 
我觉得不是楼上所说的那样,   楼主想实现的是什么?
 两个数从小到大得排列?
 
 楼主这段代码,我觉得最严重的错误是,  函数参数的问题,   用指针来实现,  不然w函数,在这段代码中什么作用也不会起到的

 
2012-01-09 17:54
Iris_
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2011-10-11
收藏
得分:0 
#include "stdio.h"
void w(int *a,int *b);
void main()
{
    int x,y;
    printf("请输入2个数:");
    scanf("%d,%d",&x,&y);
    if(x>y)
    w( &x, &y);
    printf("%d %d",x,y);
   
}
  void w(int *a,int *b)
  {
      int c;
      c=a;
      a=b;
      b=c;
  }

你可以试试编译下,是不是可以实现你要的效果,楼主请好好研习下函数传参这个问题  ..
如何用指针和引用传参,  当然引用是c++中的概念..
2012-01-09 17:59
cuijingchun
Rank: 3Rank: 3
来 自:黑龙江
等 级:论坛游侠
威 望:1
帖 子:108
专家分:186
注 册:2011-9-28
收藏
得分:0 
void w(int a,int b)
  {
      int c;
      c=a;
      a=b;
      b=c;
  
  }   

这个函数一点用也没有, a b ,在w函数用玩后就释放了.
void w(int a,int b)
  {
      int c;
      c=a;
      a=b;
      b=c;
      printf("%d %d", a, b);  

  }   
void w(int* a,int* b) //在main里面 w(&x, &y);
  {
      int c;
      c= *a;
      *a=*b;
      *b=c;
  
  }   

为自己喜欢游戏做一个自动打怪的程序QQ: 7325231    YY4350晚上编程课欢迎大家来听
2012-01-09 18:02
Iris_
Rank: 1
等 级:新手上路
帖 子:4
专家分:1
注 册:2011-10-11
收藏
得分:0 
5楼是对的,我刚才写w代码的时候,忘记改里面的代码了
2012-01-09 18:04
海底之吻
Rank: 1
来 自:云南 昆明
等 级:新手上路
帖 子:5
专家分:6
注 册:2012-1-1
收藏
得分:1 
#include "stdio.h"
void w(int a,int b)
  {
      int c;
      c=a;
      a=b;
      b=c;
  }
void main()
{
 int x,y;
    printf("请输入2个数:");
    scanf("%d,%d",&x,&y);
    if(x>y)
    w( x, y);
    printf("%d %d",x,y);
   
}
  这样可以的吧。我也是新手!
2012-01-10 00:00
hk327143206
Rank: 2
等 级:论坛游民
帖 子:35
专家分:31
注 册:2011-6-25
收藏
得分:1 
一般的最好是将main函数放在最后,这样不容易出错!
2012-01-10 00:46
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:1 
你的题目是比较两个数的大小并从小到大输出,现在给你分析下你错在什么地方了:
#include "stdio.h"
void main()
{
    void w(int a,int b);         //这里是声明,放在main()函数里面还是放在外面都可以;
    int x,y;
    printf("请输入2个数:");
    scanf("%d,%d",&x,&y);
    if(x>y)                  //如果x>y,那么进入自定义函数w();
    w( x, y);
    printf("%d %d",x,y);     //输出x,y的值;
   
}
  void w(int a,int b)
  {
      int c;
      c=a;
      a=b;
      b=c;
  }
你的x和y的值确实赋给a和b了,但是a和b的值在互换过以后是不会传给x和y的,也就是说只能实参的值传给形参,形参的值是不会传给实参的,
所以在你主函数main里的x,y的值根本就没有变,想要得到你要的效果就要在你的自定义函数中加上一句:printf("%d,%d\n",a,b);
主函数的printf前面要加个else 不然它在输出了交换后a,b的值后还要运行主函数中的printf,也就是说会输出4个值。
2012-01-10 02:12
吴小君
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:102
专家分:198
注 册:2012-1-2
收藏
得分:1 
函数要先声明一下的

小弟学习C语言刚入门,请大侠们多多指教,不吝赐解!
2012-01-10 10:43
快速回复:那位高手解决一下 错在哪了 谢了
数据加载中...
 
   



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

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