哪位大虾看看哪里错了
小弟写了段代码,想输入两个数m,n后求它们的最小公约数与最大公倍数,代码如下,编译的时候没有错误,但是就是执行不了,请大虾们帮个手,先说谢谢了!!
#include <stdio.h>
void main()
{
int m,n,a,b,max,min,s1,s2,t;
printf("请输入m,n的值:");
scanf("%d,%d\n",&m,&n);
max=m;
min=n;
p=m*n;
if (m<n)
{
t=min;
min=max;
max=t;
}
for (a=min;a>=0;a--)
{
if(min%a==0 && max%a==0) s1=a;
else s1=1;
}
printf ("%d为最大公约数.\n",s1);
for (b=max;b<=1000;b++)
{
if (b%min==0 && b%max==0) s2=b;
else s2=max*min;
}
printf("%d为最小公倍数.\n",s2);
}
[[it] 本帖最后由 sd7087003 于 2008-4-7 08:57 编辑 [/it]]
----------------解决方案--------------------------------------------------------
你输入数据的时候,两个数有用逗号隔开吗?
另,最小公倍数不是这么算的
----------------解决方案--------------------------------------------------------
我有用逗号隔开输入的,那请问最小公倍数怎么算啊??
----------------解决方案--------------------------------------------------------
最大公约数也不是这么算的
----------------解决方案--------------------------------------------------------
不用TC和WIN-TC
那用什么?
----------------解决方案--------------------------------------------------------
帮你改了改
你的第六行有语法问题
scanf("%d,%d\n",&m,&n);//这里面是不能加'\n'的啊
其次,最小公倍数的算法不好.如果公倍数大于1000怎么办?
#include <stdio.h>
int main(void)
{
int max,min,i,t,n;
printf("请输入a,b的值:");
scanf("%d,%d",&max,&min);
if (max<min)
{
t = max;
max = min;
min = t;
}
for (i = min;i > 1;i--)
if (max%i==0 && min%i==0)
break;
printf ("%d为最大公约数.\n",i);
i = max/i*min;
printf("%d为最小公倍数.\n",i);
getch();
return 0;
}
----------------解决方案--------------------------------------------------------
......
还有第九行的p=m*n;中的p没有定义.
p=m*n;你根本就没用到.
----------------解决方案--------------------------------------------------------
公约数的问题还是很经典的 让人的思路拓展
----------------解决方案--------------------------------------------------------
哈哈
谢谢各位了
我检查了一下
都是错低级错误
我会改正的
----------------解决方案--------------------------------------------------------
别写void main了
----------------解决方案--------------------------------------------------------