#include<stdio.h>
int max(int x,int y,int z)
{
if(x>y&&x>z)
return(x);
else if(y>x&&y>z)
return(y);
else return(z);
}
int mod(int d, int e)
{
return d%e;
}
int main()
{
int x1,x2,x3,t=1,i,flag;
int x0;
printf("请依次输入这3个数,用空格隔开,回车结束");
printf("\n");
scanf("%d %d %d",&x1,&x2,&x3);
x0=max(x1,x2,x3);
printf("\n");
printf("%d,%d,%d",x1,x2,x3);
printf(" 这3个数的最小公倍数是");
for (i=2;i<=x0;i=i+1) ;
{
flag=1;
while(flag=1)
{
flag=0;
if (mod(x1,i)==0)
{
x1=x1/i; flag=1;}
if(mod(x2,i)==0)
{
x2=x2/i; flag=1;}
if(mod(x3,i)==0)
{
x3=x3/i; flag=1;}
if (flag=1)
t=t*i;
}//while结束符
x0=max(x1,x2,x3);
}//for结束符
printf("%d",t);
printf("\n");
}
书上写一开始flag=1是为了保证程序能进入循环,一进去就置0了。后面的if (flag=1)是做完一次短除以后flag会变成1,检测是否进行了一次短除。如果有错,能改一下吗?我不知道怎么改才是对的了
追答判断要用==
追问试过了,改这个没有区别,还是运行不出结果
追答额。。。这一行也是有问题的 for (i=2;i<=x0;i=i+1) ;
要把后面的;去掉,否则循环体是空的。。。
泪流满面,试过了……还是不出结果……大神求帮忙啊,这个程序出答案比生孩子还难……
追答不会吧。。。我都运行ok呀
请依次输入这3个数,用空格隔开,回车结束
10 20 50
10,20,50 这3个数的最小公倍数是100
我俩私聊吧,我先给你采纳了
本回答被提问者采纳