请大家帮忙看一下哪里出问题了,找了好久都没找到。这个辗转法求最大公约数和最小公倍数的代码是自己东拼西凑的。谢谢大家的慷慨解囊
请大家看看代码错在哪里,本人看了很久都没发现
请大家帮忙看一下哪里出问题了,找了好久都没找到。这个辗转法求最大公约数和最小公倍数的代码是自己东拼西凑的。谢谢大家的慷慨解囊
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
代码中存在多个问题,我将逐行指出并提供修改后的正确代码:
#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; // 主函数应该返回一个整型值 }
上述代码中,主要的问题包括:
main
函数缺少正确的括号。- 没有使用
scanf
获取用户输入的两个数。 - 循环条件不正确且没有正确实现辗转相除法(欧几里得算法)。
- 最小公倍数计算之前,需要确保 m 和 n 都是最大公约数。
- 输出最小公倍数时,除数应为最大公约数。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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请求和响应