输出最大公约数与最小公倍数
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;
}
}
}
我这个程序输出不了值,求大佬看看错误在哪 本帖最后由 jhq999 于 2023-3-2 19:06 编辑
scanf("%d%d",&m,&n);
printf("最小公倍数为%d",m*n/i); 你的程序有一个问题,就是在使用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;
}
希望这些对你有帮助。
页:
[1]