妮儿620 2022-10-22 11:05 采纳率: 83.3%
浏览 20
已结题

辗转相除法求最大公约数

这个代码的问题出在哪儿啊?它咋不能交换m,n的值啊,而且一直在循环

#include<iostream>
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;
}

  • 写回答

2条回答 默认 最新

  • crystalloid_iron 2022-10-22 12:01
    关注

    互换函数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。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月22日

悬赏问题

  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路