读书人

大一新兴求解答~0 0

发布时间: 2013-11-19 22:55:29 作者: rapoo

大一新生求解答~0 0

#include<stdio.h>
int main()
{
int m,n,i,t,s,n1;
scanf("%d%d",&m,&n);
if(m<n)
t=m,m=n,n=t;
n1=n;
if(m%n==0)
printf("%d\n",n);
else
{
while(t!=0)
{
t=m%n;
m=n;
n=t;
}
printf("%d",n);
}
printf("%d",(m*n1)/n);
}


这个求最大公约数的代码到底错在哪里了- - 我觉得没错啊
[解决办法]
设置断点,逐步调试,分析结果。这是新手必须要学会的技能,这也是寻找BUG必须会的。
[解决办法]
if(m<n)
{t=m,m=n,n=t;}//交换记得加{},这是3句话不是1句话

[解决办法]
引用:
改成这样吧:
#include<stdio.h>
int main()
{
int m,n,i,t,s,n1;
scanf("%d%d",&m,&n);
if(m<n)
{
t=m;
m=n;
n=t;
}
t=m%n;
while(t!=0)
{
m=n;
n=t;
t=m%n;//把这句放到最后,n记录上一个余数值
}
printf("%d",n);
}


是这样的
[解决办法]
崩溃啊!再看了看,t等于0了,n=t不也是0了吗

读书人网 >C语言

热点推荐