鱼C论坛

 找回密码
 立即注册
查看: 2044|回复: 2

[已解决]输出最大公约数与最小公倍数

[复制链接]
发表于 2023-3-2 18:50:09 From FishC Mobile | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
void main()
     {
         int i,m,n,t;
         scanf("%d%d",m,n);
         if(m<n)
         {
             t=n;
             n=m;
             m=t;
         }
         for(i=n;i>=1;i--)
         {
             if(m%i==0&&n%i==0)
             {
             printf("最大公约数是%d",i);
             break;
             }
             }
         
        for(i=m;i<=m*n;i++)
         {
             if(i%m==0&&i%n==0)
             {
             printf("最小公倍数为%d",i);
             break;
         }
     }
     }
我这个程序输出不了值,求大佬看看错误在哪
最佳答案
2023-3-2 22:13:54
你的程序有一个问题,就是在使用scanf函数时,没有加上取地址符&。这样会导致输入的值无法正确赋给变量m和n。正确的写法应该是:

scanf("%d%d",&m,&n);
另外,你的程序没有考虑到m和n可能为0或负数的情况,这样会导致除以0或无限循环的错误。建议你在输入前加上一些判断和提示语句,比如:

printf("请输入两个正整数:\n");
scanf("%d%d",&m,&n);
if(m<=0||n<=0)
{
    printf("输入错误,请重新输入!\n");
    return;
}
希望这些对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-3-2 18:58:34 | 显示全部楼层
本帖最后由 jhq999 于 2023-3-2 19:06 编辑
scanf("%d%d",&m,&n);
printf("最小公倍数为%d",m*n/i);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-3-2 22:13:54 | 显示全部楼层    本楼为最佳答案   
你的程序有一个问题,就是在使用scanf函数时,没有加上取地址符&。这样会导致输入的值无法正确赋给变量m和n。正确的写法应该是:

scanf("%d%d",&m,&n);
另外,你的程序没有考虑到m和n可能为0或负数的情况,这样会导致除以0或无限循环的错误。建议你在输入前加上一些判断和提示语句,比如:

printf("请输入两个正整数:\n");
scanf("%d%d",&m,&n);
if(m<=0||n<=0)
{
    printf("输入错误,请重新输入!\n");
    return;
}
希望这些对你有帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-25 14:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表