毕淑敏散文儿子的创意:很简单的C语言程序问题(关于最小公倍数)

来源:百度文库 编辑:高校问答 时间:2024/05/08 03:07:33
#include "stdio.h"
有错,输入789 321,会显示642。789、321的最小公倍数不是642,明显不对啊?但是程序找不到错。有谁能帮忙看一下,谢谢。

main()
{int a,b,t,i,k;
printf("Please Input a,b:\n");
scanf("%d %d",&a,&b);
if(a>b){t=a;a=b;b=t;}
for(i=1;i<=a;i++)
if(b*i%a==0){k=b*i;break;}
printf("%d\n",k);}
这个我知道理由了,分留给第一个说对答案的人。

b*i会发生数据溢出
所以只要改成 long int 就可以了

main()
{long int a,b,t,i,k;
printf("Please Input a,b:\n");
scanf("%ld %ld",&a,&b);
if(a>b){t=a;a=b;b=t;}
for(i=1;i<=a;i++)
if(b*i%a==0){k=b*i;break;}
printf("%ld\n",k);
}

显示的是84423阿.
你是不是输入a,b的时候加了一个逗号阿

程序应该没错吧,按照上面的数据测试也没问题 .....

scanf语句中 别用空格啊!因为那样的话 读取时 必须加空格
得细心啊