| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3132 人关注过本帖
标题:简单的max函数问题!!!
只看楼主 加入收藏
a3051211
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:15 
简单的max函数问题!!!
大虾们   看看这个哪里不对了!!!!!!

main()
      
     { int a,b,c;
        scanf("%d%,d",&a,&b);
          c=max(a,b);
            printf("max=%d",c);
            getch();
      }
      
      int max(int x,int y);
          {
          int z;
          if (x>y) Z=X;
          else z=y;
          return(z);
          }


[ 本帖最后由 a3051211 于 2011-8-28 17:26 编辑 ]
搜索更多相关主题的帖子: return 
2011-08-28 17:25
luyi_footman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:32
专家分:100
注 册:2011-7-14
收藏
得分:5 
你在max函数里定义了一个变量Z,这个变量在函数max调用执行完毕后自动被编译器在内存中注销,所以
楼主想在一个函数里返回一个局部变量的值,是达不到楼主所想要的目的的。
解决问题的方法1:可以适当修改下函数max,给max再传一个参数,专门用来得到最终的结果,但是注意
这个参数一定要是引用传递喔!
解决问题的方法2:最快也是最简单的方法,将max函数里的int z;放到main()的上面一行,也就是把Z
定义为一个全局变量,然后OK了。

天道酬勤!
2011-08-28 17:33
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:5 
求两个数中的较大值,没必要用这么复杂,函数中一个表达式就够了。用三元表达式。
#include <stdio.h>
int max(int,int);
int main(void)
{
    int a,b,c;
        scanf("%d,%d",&a,&b);
        c=max(a,b);
        printf("max=%d\n",c);
    return 0;
}
     
int max(int x,int y)
 {
 return (x>y ? x:y);
 }
你的原来程序好多错误
1. scanf("%d%,d",&a,&b);逗号位置错了
2.函数定义后面不能有分号,声明才需要分号
3.你的函数体里面怎么用了大写的Z?
4.头文件不要?
我用的是gcc编译器,getch去掉了,你如果在windows下面调试,自己加上吧


[ 本帖最后由 pauljames 于 2011-8-28 17:52 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-08-28 17:41
a3051211
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-15
收藏
得分:0 
回复 2楼 luyi_footman
图片附件: 游客没有浏览图片的权限,请 登录注册
2011-08-28 17:53
a3051211
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-10-15
收藏
得分:0 
回复 3楼 pauljames
多谢   疏忽了!!!!!!!
2011-08-28 17:57
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:5 
楼主的这个程序问题多多,先不说能不能得到正确的结果,如果把你的这个程序copy后直接编译的话
根本编译不成功的!
[1]scanf("%d%,d",&a,&b);这样能等到你想要的输入结果吗?
应该这样才是你所要的结果吧:
scanf("%d,%d",&a,&b);
[2] if (x>y) Z=X;这里的Z=X都是大写的,c语言对大小写是敏感的,编译时会报错,Z,X没有定义
应该这样:
 if (x>y) z=x;
[3] getch();是需要包头文件conio.h的,#include <conio.h> 可能有的编译器不需要,这个我不知道了.
[4]int max(int x,int y);
          {
          int z;
这里是函数的定义,int max(int x,int y)后面要紧跟{ ,不能加分号的
[5]函数在使用前都要声明的,由于你的max()函数定义在main()后面的,而你又在main()
中调用了max()函数,所以一定要在调用其之前声明该函数的,函数声明是这样的
int max(int x,int y);
一般放在main()之前就可以了!

这样修改后应该能得到你想要的结果了!
希望你能自己修改完成这个程序!
如有不当之处,请不吝赐教,谢谢!

注:光闷头写了,发表时才看到已经有详细的说明了,真是不好意思啊,算我没说

[ 本帖最后由 Luminal 于 2011-8-28 18:01 编辑 ]
2011-08-28 17:58
lxk115
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:70
专家分:121
注 册:2011-8-28
收藏
得分:5 
我想请问一下哦~~max函数可以放到主函数后面来使用??!!!

行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。


2011-08-28 18:04
Luminal
Rank: 6Rank: 6
等 级:侠之大者
帖 子:140
专家分:470
注 册:2011-8-24
收藏
得分:0 
回复 7楼 lxk115
程序代码:
#include <stdio.h>

int max(int x,int y);
void print(char* str,int x,int y);

int main()

 { 
    int a,b;
    scanf("%d,%d",&a,&b);
    print("Max=",a,b);
    return 0; 

 } 
      

 int max(int x,int y)
{
    if(x>y)return x;
    return y;
}
void print(char* str,int x,int y)
{
      x=max(x,y);
       printf("%s%d\n",str,x);
}

不知道这样能不能解答你的问题!
2011-08-28 18:15
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 楼主 a3051211
越看越郁闷!! 仅供参考: max函数你的头文件呢,   getch();某些编译器,需要头文件! #include<stdio.h>跑哪了输入,输出函数都成黑户了, scanf("%d%,d",&a,&b);逗号放错地方了, int max(int x,int y);分号
          {
          int z;
          if (x>y) Z=X;
          else z=y;
          return(z);
          }
我感觉你字母的大小写乱用

[ 本帖最后由 A13433758072 于 2011-8-28 18:29 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-08-28 18:22
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 8楼 Luminal
你的代码有问题,自己去编译下吧!

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-08-28 18:29
快速回复:简单的max函数问题!!!
数据加载中...
 
   



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

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