请大家看下这段C程序有什么异常

来源:百度知道 编辑:UC知道 时间:2024/05/04 09:58:44
求最大公倍数和最小公约数的C程序
#include<stdio.h>
void main()
{
int m,n=0;
int max,min=0;
scanf("%d,%d\n",&m,&n);
if(m>n)
{
max=n;
min=m;
}
else
{
max=m;
min=n;
}
for(;max>0;max--)
{
if((m%max==0)&&(n%max==0))
printf("%d is the max yueshu\n",max);break;
}
for(;;min++)
{
if((min%m==0)&&(min%n==0))
printf("%d is the min yueshu\n",min);break;
}
}
每次在输入m,n这两个数的时候,回车回不了编码界面;
,结果也有问题
不要copy其他的算法,我只要求看看这段编码的逻辑上有什么错误
谢谢

scanf("%d,%d\n")这句最后的\n是打酱油的?
去掉\n应该输入就正常了
仔细看一下scanf的用法吧

if((min%m==0)&&(min%n==0))
printf("%d is the min yueshu\n",min);break;

if后面跟两个语句要用大括号括起来,否则break;这句不会被包含在if的结果里,也就是说,不管输入什么数字,必然都执行一次循环就break了

说几个问题吧

1、scanf("%d,%d\n",&m,&n);
最好改成scanf("%d%d\n",&m,&n);否则你输入时要按 “3,5”的方式输入

2、printf("%d is the max yueshu\n",max);break;
两边加上大括号,否则每次循环只会执行一次,因为if只会影响到紧跟的语句,多条的话要用大括号括起来

3、求最大公约数的话不是应该从min开始,然后逐渐减小吗

求最小公倍数不是应该从max开始逐渐增大吗
你的逻辑不是很清楚