wdswds666999 2024-03-10 16:59 采纳率: 96.2%
浏览 4
已结题

请大家看看代码错在哪里,本人看了很久都没发现

img


请大家帮忙看一下哪里出问题了,找了好久都没找到。这个辗转法求最大公约数和最小公倍数的代码是自己东拼西凑的。谢谢大家的慷慨解囊

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-10 17:00
    关注

    引自免费微信小程序:皆我百晓生

    代码中存在多个问题,我将逐行指出并提供修改后的正确代码:

    #include<stdio.h>
    
    int main() // 缺少 (),修正函数定义
    {
        int m, n, t, k;
        
        printf("请输入两个数:");
        scanf("%d %d", &m, &n); // 添加输入语句,用 scanf 获取用户输入的两个数
    
        while (m != n) // 更正循环条件,原本的 "t!=e" 无意义
        {
            if (m < n)
                t = m;
                m = n;
                n = t % n; // 修复交换和求余操作,原代码中的符号错误已修正
            else
                t = n;
                n = m;
                m = t % m;
        }
        
        printf("最大公约数:%d\n", n); // 循环结束时,n 就是最大公约数(gcd)
    
        k = m * n; // 计算最小公倍数前,先确保 m 和 n 是两数的最大公约数
        printf("最小公倍数:%d\n", k / n); // 输出最小公倍数(lcm),这里除以 n 而不是 m,因为此时 n 已经是 gcd
    
        return 0; // 主函数应该返回一个整型值
    }
    

    上述代码中,主要的问题包括:

    1. main 函数缺少正确的括号。
    2. 没有使用 scanf 获取用户输入的两个数。
    3. 循环条件不正确且没有正确实现辗转相除法(欧几里得算法)。
    4. 最小公倍数计算之前,需要确保 m 和 n 都是最大公约数。
    5. 输出最小公倍数时,除数应为最大公约数。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月25日
  • 已采纳回答 3月17日
  • 创建了问题 3月10日

悬赏问题

  • ¥15 前端el-table表头显示不全
  • ¥30 如何实现用乐迪AT9S遥控器控制步进电机
  • ¥50 ASP+IIS+SQL2008,search.asp搜索突然失效
  • ¥20 yolov5中train过程中,第一次完整训练的验证过程中,图像处理尺寸和设置尺寸不一致(设置尺寸失效)的问题
  • ¥20 自建A网站如何调用B网站网页数据
  • ¥15 在edge和chrome浏览器,怎么在新标签页打开链接
  • ¥15 c#如何使用scottplot给已画好的自定义热度图,增加一个一定的colorbar
  • ¥15 信贷平台.用户信用评估和风险评估怎么做,希望来个做过的Java.有合作的机会
  • ¥15 IMageEN获得图形顶点坐标的问题
  • ¥50 软件PC客户端抓包,获取http请求和响应