一个小小C语言的疑惑请大虾们给解决下

来源:百度知道 编辑:UC知道 时间:2024/06/03 23:35:30
一个小小的疑惑请大虾们给解决下
小弟也是才学的C,今天看书的时候,有一道题说是要求输入两个正数,求它们的最大公约数和最小公倍数。下面的程序是这个编的
main()
{int p,r,temp,n,m;
printf("input n and m:");
scanf("%d,%d",&n,&m);
if(n<m)
{temp=n;n=m;m=temp;}
p=n*m;
r=n%m;
while(r!=0)
{n=m;m=r;r=n%m;}
printf("最大公约数是:%d\n",m);
printf("最小公倍数是:%d\n",p/m);
}
上面的是那书上的程序,应该没错吧?
我自己用了好几组数都试过了,好象能求出来,可是我用n=5,m=3试的话,按上面的算法,我怎么也算不出来,按理说5和3的最大公约数应该是1吧,它们的最小公倍数应该是15吧,可是用上面的算法我就是算不出来,也不知道是我的计算过程错了还是怎么着,可是我前面都是这样算的呀,怎么偏偏就5和3出错呢?哪位大虾有空的话出来跟我说一下好吗?

去掉 scanf("%d,%d")中间的逗号,
这次应该对了,
如果有逗号,输入时,两个数字中间也应该有个逗号。而且数字中间也不能有空格。
这是格式输入问题。你可以查看一下scanf("")函数的用法。

#include<stdio.h>
int main()
{int p,r,temp,n,m;
printf("input n and m:");
scanf("%d%d",&n,&m);
if(n<m)
{temp=n;n=m;m=temp;}
p=n*m;
r=n%m;
while(r!=0)
{n=m;m=r;r=n%m;}
printf("最大公约数是:%d\n",m);
printf("最小公倍数是:%d\n",p/m);
}

我在我这里执行没有错。

在我机子上是好的,估计是楼主RP问题:)

这个程序没有一点问题的,我给你运行了,可以看看我运行的结果如下图:http://hiphotos.baidu.com/weirhp/pic/item/4a01c51bbe2efbd8ac6e7563.jpg
给你推荐个软件吧,试试这个,看看能不能运行下载这个吧, 下一个Turbo C\c++ For Windows 集成实验与学习环境吧 很好用的, http://165.newhua.com/down/turboc_41427.rar 界面如