这个代码的问题出在哪儿啊?它咋不能交换m,n的值啊,而且一直在循环
#include
using namespace std;
void Swap(int m, int n)
{
int temp = m;
m = n;
n = temp;
}
int main()
{
int m, n, z;
cout << "请输入两个整数:" << endl;
cin >> m >> n;
z = m % n;
while (z != 0)
{
if (m >= n)
{
z = m % n;
m = n;
n = z;
}
else
{
Swap(m, n);
}
}
cout << n;
return n;
}
互换函数Swap(int m,int n)的参数是形参,在函数内部运算时,会额外创建另外的,独属于Swap函数的m和n变量(形参),作用域在Swap函数内部,函数执行完后就会清除,而不会影响main函数里的m和n的值(实参),所以main函数里的循环一直在执行Swap函数,而m和n的值在main函数里根本没有变化。将该函数的参数改成引用型就能解决了。如下
void Swap(int &m, int &n)
或者用指针作为参数也能解决。
另外,最后输出的值应该是m,不是n。