读书人

c语言的一到数学题~

发布时间: 2012-02-12 17:16:33 作者: rapoo

c语言的一到数学题~~求救
我用的是"辗转相除法"求两个数的最大公约数
#include <stdio.h>
void main()
{
int a,b,c;
printf( "Please input number: ");
scanf( "%d%d ",&a,&b);
do
{
if(a%b!=0);
else {c=a%b;a=b;b=c;}
}
while(a%b==0);
printf( "%d ",b);
}


但求出来的数始终不对,请高手指点下是哪错了?

[解决办法]
可能你对最大公约数的求法不对!~

按你的思路,改写了下!~ ^_^

#include <stdio.h>
int main()
{
int a,b,c;
printf( "Please input number: ");
scanf( "%d,%d ",&a,&b); /*最好添个逗号!~ ^_^*/
while(1)
{
if(a%b==0)
break;
else
{
c=a%b;
a=b;
b=c;
}
}
printf( "%d\n ",b);
return 0;
}

[解决办法]
#include <stdio.h>
/*#include <math.h> */
void main()
{
int a,b,temp;
scanf( "%d,%d ",&a,&b);
if(a <b)
{
temp=a; /*保证a为最大*/
a=b;
b=temp;
}
else
temp=b;
printf( "temp=%d\n ",temp);
while(temp)
{
if(!(a%temp||b%temp))
{
printf( "The result is %d\n ",temp);
break;
}
else
{
temp--;
if(temp <=0)
printf( "No Result! ");
}
}
getch();
}

输入数据的格式是 a,b回车 ^_^
上面的代码调试过,没问题!
[解决办法]
#include <stdio.h>
void gcm(int m,int n)
{
while(m!=n)
{
while (m> n) m-=n;
while(n> m) n-=m;
}
printf( "The result is :%d\n ",m);


}
int main()
{int a;
int b;
printf( "Input the value of numbers:\n ");
scanf( "%d %d ",&a,&b);
gcm(a,b);

return 0;
}
在gcc中已经编译通过!
[解决办法]
这样就可以了
#include <stdio.h>
void main()
{
int a,b,c;
printf( "Please input number: ");
scanf( "%d%d ",&a,&b);
do
{
if(a%b==0)
break;
else {
c=a%b;
a=b;
b=c;
}
}while(a%b!=0);
printf( "%d ",b);
}

读书人网 >C语言

热点推荐