C++求助right operand has type 'void'是什么错误?

题目如下:求两个正整数的最大公约数和最小公倍数。⑵要求编写两个函数,分别求最大公约数和最小公倍数,在主函数中输出结果。⑶思路①求最大公约数函数中,使用辗转相除法完成功能。... 题目如下:

求两个正整数的最大公约数和最小公倍数。
⑵ 要求
编写两个函数,分别求最大公约数和最小公倍数,在主函数中输出结果。
⑶ 思路
① 求最大公约数函数中,使用辗转相除法完成功能。
② 最小公倍数等于两个正整数乘积除以最大公约数,因此可以在求最小公倍数函数中调用求最大公约数函数,形成函数嵌套调用。
如果使用没有返回值函数,通过定义全局变量定义也可以完成本题要求功能,如何实现?
程序:
#include <iostream>
using namespace std;
int maximum;
int minimum;
void x(int k,int j)
{
int r;
while(r!=0)
{
r=k%j;
k=j;
j=r;
maximum=k;
}
}
void y(int k,int j)
{
int s;
s=(k*j)/x(k,j);
minimum=s;

}
int main()
{
int k,j;
cout<<"输入两个正整数:"<<endl;
cin>>k;
cin>>j;
cout<<"最大公约数为:"<<maximum<<endl;
cout<<"最小公倍数为:"<<minimum<<endl;
return 0;
}
显示错误
error C2297: '/' : illegal, right operand has type 'void'
请问哪里出了错?该如何改正??
展开
 我来答
清正还谦卑的小桃花9143
2011-04-28 · TA获得超过430个赞
知道小有建树答主
回答量:366
采纳率:100%
帮助的人:403万
展开全部
老兄,这样的低级错误也犯???!!!
'/' : illegal, right operand has type 'void' 说得很明白,被除数的类型为void,除("/")允许的右操作数类型有:int, long, float,double,而你的x函数没有返回值,而是直接修改全局变量。
修改方法很简单,先调用x函数,再除以全局变量就行了。
y函数改成:
void y(int k, int j)
{
int s = k * j;
x(k,j);
minimum = s / maximum;
}

PS: LZ应该是初学者吧,即使按照上面的方法修改,程序依然输出最大公约数和最小公倍数都是0!!!!
因为你在main函数中根本没有调用 y 函数!
再在main函数中修改:
cin>>k;
cin>>j;
y(k, j); //加上函数调用才行,无需调用x,因为y中已经调用
cout<<"最大公约数为:"<<maximum<<endl;
cout<<"最小公倍数为:"<<minimum<<endl;
myxiaoniao
推荐于2018-03-11 · 超过16用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:59.4万
展开全部
s=(k*j)/x(k,j);
错误在这里,你这个/后面的除数是个函数,但是这个函数返回类型是void,不能作为除数呀
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nlxcbd
2011-04-27 · TA获得超过176个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:153万
展开全部
把void x(int k,int j ),改为int x(int k,int j),并在函数体中加入return maxium;就OK了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式