首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

这条代码不太懂 求解,该如何解决

2012-03-27 
这条代码不太懂 求解#includestdio.hint main(){long m,n,i1,j,sscanf(%ld,%ld,&m,&n) 如果m是30 n

这条代码不太懂 求解
#include<stdio.h>
int main()
{long m,n,i=1,j,s;  
scanf("%ld,%ld",&m,&n); 如果m是30 n是40 
for(;i<=m&&i<=n;i++)  
{if(m%i==0&&n%i==0) s=i;}  
if(m>=n) j=m;  
else j=n;  
for(;!(j%m==0&&j%n==0);j++);  
printf("s=%ld,j=%ld\n",s,j);
getch();
} 这个是整公式求最大公约最小公陪数
for(;i<=m&&i<=n;i++)  
{if(m%i==0&&n%i==0) s=i;}  
这段不解 30%1为真40%1也为真 那s就应该也是1啊
但是为何结果是10公倍为120
哪段是求最大公约的?

[解决办法]
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;} 
当i=1的时候,虽然成立但是他没跳出啊,s应该等于跳出前最后一次的赋值
[解决办法]
for(;i<=m&&i<=n;i++)
{if(m%i==0&&n%i==0) s=i;}
这段不解 30%1为真40%1也为真 那s就应该也是1啊
s赋值为1的时候,循环没有结束,因为i<=m&&i<=n这个条件还没成立。
所以一直循环到i=30的时候结束循环。
这个时候s=10

热点排行