| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1250 人关注过本帖
标题:实在是解决不了了![求助]
取消只看楼主 加入收藏
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
 问题点数:0 回复次数:9 
实在是解决不了了![求助]

/*函数调用求最小公倍数和最大公约数*/
#include<stdio.h>
gys(int x,int y)
{
int r;
while(y!=0)
{
r=x%y;
x=y;
y=r;
}
return(x);
}
main( )
{
int num1,num2,a,c,d;
printf("qing shu ru liang ge zheng shu:");
scanf("%d%d",&num1,&num2);
a=gys(int num1,int num2) /*这里有错!表达式语法错在main函数中*/  
printf("liang ge shu de gong yue shu shi %d\n",a);
printf("liang ge shu de gong bei shu shi %d\n",num1*num2/a);
getch( );
}


今天突发奇想:想试试函数调用!
可是怎么着也没有通过编译!搜了一下也没有和我个程序错一样的(可能是这个错太低级了!)
请指教!!

搜索更多相关主题的帖子: return include 最小公倍数 
2006-05-07 22:12
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
论坛大哥:为什么我在a=gys(int num1,int num2);里面对num1和num2指定为int型会出错呢!

2006-05-07 22:32
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
我就不再提那个分号的事了!
a=gys(int num1,int num2) /*这里有错!表达式语法错在main函数中*/
a = gys(num1, num2);
 

2006-05-07 22:36
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
谢谢5楼上的兄弟!
那个c和d是我在调试的时候加上的!
忘了删了!
看出来你很细心啊!
再问一下那个main()函数中return 0很重要吗?
我在编译的时候没加它也可以得到正确的结果!
还有就是你的程序为什么还要再多出一个判断num1和num2大小的语句呢!
不用判断也可以啊!

[此贴子已经被作者于2006-5-7 22:45:13编辑过]


2006-05-07 22:44
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
谢了!
那个呢?
就是3楼的问题!!!

2006-05-07 22:51
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 

Re:论坛9楼
a=gys(int num1,int num2) /*这里有错!表达式语法错在main函数中*/
上面这个语句是我的程序里的!
a = gys(num1, num2) ;
这个语句是你的程序里的!

我只是想比较一下,说明一下自己的错误有多低级!




下面再总结一下吧!
关于这个分号的!(又看了一遍书!)
不加分号的时候!
被调函数在在主调函数后面,如果一楼的程序main()和gys()反过来!即:gys在后main在前!当然了,这时候还要对gys()进行必要的声明!
这个时候在a=gys(int num1,int num2)语句后是不用加分号的!
加分号的时候
这个就不用说了!




2006-05-07 23:09
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
以下是引用神vLinux飘飘在2006-5-7 22:58:00的发言:

你那不是指定类型,而是重新定义变量
在C89标准中是不允许在程序中这样定义变量的,比如
for(int i=0;i<100;i++);
这样的语句是非法的

所以,你要实现你说的指定为int类型,可以这样
gys( (int)num1,(int)num2 );
这样做强制转换

但是这样做是很没必要的,因为你在定义num1和num2的时候他们本来就是int型
所以,你这样写就可以了
gys( num1,num2 );


明白了
谢谢!!


2006-05-07 23:12
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
以下是引用疯狂VC在2006-5-7 23:09:00的发言:

下面再总结一下吧!
关于这个分号的!(又看了一遍书!)
不加分号的时候!
被调函数在在主调函数后面,如果一楼的程序main()和gys()反过来!即:gys在后main在前!当然了,这时候还要对gys()进行必要的声明!
这个时候在a=gys(int num1,int num2)语句后是不用加分号的!
加分号的时候
这个就不用说了!



又来问题了!! 是编译工具的问题还是书上错了啊!!??
是这样的!昨天没有验证不加分号的情况就发帖了!今天又试了一下!竟然不能通过编译!
书上写着《C程序设计(第二版)》第152页的例8,5第五行的那个语句不加分号是能通过编译的!
"语句缺少" ; "在main函数中"!
这个是书的错还是我的工具的事啊?
我用的是win-tc


2006-05-08 08:52
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
看来是书上的错了!

尽信书不如无书啊!!!!
谢楼上的两位了!

2006-05-08 13:42
疯狂VC
Rank: 1
等 级:新手上路
威 望:1
帖 子:375
专家分:0
注 册:2006-3-29
收藏
得分:0 
呵呵
看来你还是没有好好的看帖子了
a=gys(num1,num2);
这个语句里面没有分号!
还有就是在调用函数时不该再重复定义两个变量为int型!

你看看别人发的帖子
各位高手已经把这个问题解决了!

[此贴子已经被作者于2006-5-12 2:02:38编辑过]


2006-05-12 01:59
快速回复:实在是解决不了了![求助]
数据加载中...
 
   



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

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