【发布时间】:2019-04-08 04:24:52
【问题描述】:
我正在尝试解决这个挑战问题,我的意思是通过引用一个函数来找到两个输入数字的 GCD。但是,我不确定我到底在哪里搞砸了。这是供参考的确切问题:
编写一个函数,接受 x 和 y 作为输入参数,并计算并返回两个值的最大公分母。
我尝试创建一个函数来查找 GCD,然后稍后仅引用该函数。我不确定我做错了什么。
#include <iomanip>
using namespace std;
int gcd;
cout << "Enter a valid integer: ";
cin >> n >> m;
int digit = number(n, m);
return 0;
}
int number(int n, int m){
for (int i=1; i<=n; ++i){
int gcd = i;
if(n%i==0 && m%i==0) {
break;
}
return gcd;
}
}
我应该得到这个: 输入两个整数:12 8 12和8的GCD是4。
但是,我得到了一个错误,gcd 没有在这个范围内声明,这没有意义,因为我在函数内部和外部都将它声明为 int。
【问题讨论】:
-
你希望
return gcd(n, m);行做什么? -
那是个错误,我才意识到;在这种情况下,我只想打印两个数字的 gcd,这将由 i 表示。
-
@RSahu 在取出返回行中的错误并将其变为 return gcd 后; ,我仍然得到 gcd 没有声明的错误。
-
这个错误是有道理的。
gcd在if语句的范围内定义。它不存在于它之外。 -
记住花括号引入了一个新的范围。此外,
main中的gcd与其他函数中的gcd完全无关。在您最喜欢的 C++ 书籍中了解词法范围。