求助:求公约数的C程序

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:36:31
#include "stdio.h"
void main()
{
int m,n,i;
scanf("%d %d",&m,&n);
for(i=1;(i<m)&&(i<n);i++)
{
if((m%i<0.00001)&&(n%i<0.00001)) printf("%d",i);
}

}

麻烦问下,哪里错了???
能执行,就是运行后(比如输入11 121 回车)只能输出1

汗。。。。。。。

我有答案,只是想问下,我这么做为什么不对。。。

呵呵这是肯定的。
1.因为for循环的判断语句是 (i<m)&&(i<n)所以当i=11时i=m所以程序结束,虽然满足 (m%i<0.00001)&&(n%i<0.00001) 但是for循环已经结束所以不进行输出。
2.在i=1,2,3,。。。。10的过程中只有当i=1时输出,其他的因为m%i都不小于0.00001所以不输出。
只要把for的判断语句改为(i<=m)&&(i<=n)就成了。你的程序少了判断其中一个数是另一个约数的可能。

# include <stdio.h>
void main ()
{ int n1,n2,t,b,a;
do
{
printf ("please enter a number (n1>0) n1=");
scanf ("%d",&n1);
printf ("please enter the other number (n2>0) n2=");
scanf ("%d",&n2);
if (n1>0&&n2>0)
continue ;
printf ("you enter a wrong number!!!please enter once more!!\n");
}
while (n1<0||n2<0);
if (n1<n2)
{
t=n1;
n1=n2;
n2=t;
}
a=n1;
b=n2;
while (b!=0)
{
t=a%b;
a=b;
b=t;
}
printf