我还没学void 和for 可以用int型和while语句解决吗?
追答#include
int main()
{
int m,n,k,min,max,i;
scanf("%d%d",&m,&n);
if(n0)
{
if((m%i==0)&(n%i==0))
{
max=i;
break;
}
i--;
}
min=m*n/max;
printf("%d和%d的最大公约数是%d\n",m,n,max);
printf("%d和%d的最小公倍数是%d\n",m,n,min);
}
定义main函数的类型的时候,void和int是没有区别的,其实绝大多数时候定的是void,也就是空类型。for语句和while语句是一样的,这个是我修改后的程序,希望同样能帮到你。
我看懂您求最大公约数的方法了,的确很新颖。如果要用辗转相除法应该怎么表示?
追答#include<stdio.h>
int main()
{
int m,n,r,p,k;
scanf("%d%d",&m,&n);
if(n>m)
{
k=n;
n=m;
m=k;
}
p=m*n;
while(m!=0)
{
r=n%m;
n=m;
m=r;
}
printf("这是最大公约数:%d\n",n);
printf("这是最小公倍数:%d\n",p/n);
return 0;
}
这个是我给你修改后的程序,你的程序思路上是正确的,只是有两个细节错了。
两个数值比较的时候,if里面的语句应该是(n>m),,而不是(n<m);2
while里面应该是(m!=0),而不是(m=0);