发布网友 发布时间:2022-02-28 09:57
共3个回答
热心网友 时间:2022-02-28 11:26
j++有执行,但是i没变,所以break永远不会执行,变成死循环.
把for(i=j*a;i<=m*n;j=(j+1))
敢成for(i=a;i<=m*n;i+=a)) 或for(i=j*a;i<=m*n;i=a*j++)
热心网友 时间:2022-02-28 12:44
#include<stdio.h>
void main()
{
int m,n,a,b,i,j=1;
printf("输入两个整数:");
scanf("%d%d",&m,&n);
a=(m>n?m:n);
for(i=j*a;i<=m*n;j=(j+1)) //应该是这里出问题了.for循环的初值,只能第一次使用,你这个循环中i没有增加,所以他就是个死循环,经管你的有j的增加,但是那个j是在初值里.他只在第一次被使用,以后每次不使用初直,所以你的i的值是不会增加的.
if(i%m==0&&i%n==0) break;
printf("两个数的最小公倍数是:%d\n",i);
}
热心网友 时间:2022-02-28 14:19
你写的和序i的值始终没有改变。所以你的IF语句只能正确判断出两个可以整除的数。你输入2和6可以,而3和5就不可以了。你应该把i=j*a放在for 循环的第三个语句中。