新手C语言问题,大家帮忙看看
小弟我刚学C,刚加入论坛,希望大家指点一下。
1.问题:
输入两整数,求最大公约数和最小公倍数(PS:非辗转相除法)
2.程序如下:
#include<stdio.h>
int main ()
{
int a,b,i,j;
printf("请输入两个整数:");
scanf("%d,%d",&a,&b);
if(a<b) {i=a,a=b,b=i;};
for(i=b;i>1;i--)
if(a%i==0&&b%i==0) break;//求最大公约数
for(j=a;;i++)
if(j%a==0&&j%b==0) break;//求最小公倍数
printf("最大公约数是:%d\n最小公倍数是:%d\n",i,j);
return 0;
}
编译没有错误,但运行时,只有当我输入两者互为倍数的数字时,才显示结果;输入其它数字时,没有反应。
这到底是什么问题?算法错误还是格式错误?
希望大家能帮我找出错误原因。
[解决办法]
#include<stdio.h>
int main (void)
{
int a,b,i,j,k;
printf("请输入两个整数:\n");
//输入最好不要添加逗号
scanf("%d%d",&a,&b);
if(a<b)
{
k=a;
a=b;
b=k;
}
//这里要i大于等于1
for(i=b;i>=1;i--)
if(a%i==0&&b%i==0)
break;//求最大公约数
//这里不是i++,是j啊
for(j=a;;j++)
if(j%a==0&&j%b==0)
break;//求最小公倍数
printf("最大公约数是:%d\n最小公倍数是:%d\n",i,j);
return 0;
}
自己要学会调试啊
还有记得结贴~~