我用c++编程软件编写c语言,编了一道求约数的题目,编译可以但是结果总是不正确,得出的正确的答案

我用c++编程软件编写c语言,编了一道求约数的题目,编译没有问题,但是结果总是不能得出的正确的答案。我写的程序应该没有问题,在别人机子是运行可以得到正确的答案,而在我的电... 我用c++编程软件编写c语言,编了一道求约数的题目,编译没有问题,但是结果总是不能得出的正确的答案。我写的程序应该没有问题,在别人机子是运行可以得到正确的答案,而在我的电脑是却不可以,难道是硬件问题?写的程序如下
#include<stdio.h>
#include<stdlib.h>
int main()
{int p ,r,n,m,temp;
printf("请输入两个正整数n,m :");
scanf ("%d,%d",&n,&m);
if (n<m)
{ temp=n;
n=m;
m=temp;
}
p=n*m;
while (m!=0)
{r=n%m;
n=m;
m=r;

}

printf ("它们的最大公约数为 :%d\n",n);
printf ("它们的最小公约数为:%d\n",p/n);

system("pause");

} 运行结果是 : 它们的最大公约数为:3
它们的最大公约数为: -234694388
显然结果错误,但是我找不出哪里出问题啦..请高手指点..
我输入的是12和8,用的是DEV C++软件,别人机子上面用同样的软件运行结果正确 ,而我的却错啦。。。
展开
 我来答
i_you_love
2008-08-31 · TA获得超过252个赞
知道答主
回答量:177
采纳率:0%
帮助的人:0
展开全部
你的错误是 scanf ("%d,%d",&n,&m);

应该改为scanf ("%d%d",&n,&m); 就是去掉两个%d中间的逗号

我自己写的一个
#include<stdio.h>
#include<stdlib.h>
int main()
{int p ,r,n,m,temp;
printf("请输入两个正整数n,m :");
scanf ("%d%d",&n,&m);

while(n!=m)
{
if(n>m)
{
n=n-m;
}
else
{
m=m-n;
}
}

printf ("它们的最大公约数为 :%d\n",m);

system("pause");
}
zzz2003526
2008-08-31 · TA获得超过411个赞
知道答主
回答量:215
采纳率:0%
帮助的人:219万
展开全部
输入的数据是不是太大了,造成了溢出,可以尝试改用long型试试,这个算法我忘记了,,所以不知道你这个算法对不。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式