芯硕半导体 破产清算:C语言有问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/08 13:07:14
麻烦请用心看,因为我很急
main ()
{int a,s,d;
int a1(int x,int y);

scanf("%d,%d",&a,&s);
a1(a,s);
}

a1(int x,int y)
{
int i,j,a,s;
for (i=1;;i++)
for (j=1;j<=i;j++)
{
if (x*i==y*j)
{printf("min mulpile=%d",x);break;continue;}

}

}
为什麼我跳不出2个的for

//这是经我调试通过的,你试一下吧...
//我想说一下,你写程序时1:不要提前定义太多变量,在需要时再去定义
//2:continue 是退出本次循环,只有一次;而break是退出一个FOR循环.
|
|
#include "stdio.h"
void main ()
{
int a1(int x,int y); //声明函数

int a,s;
scanf("%d,%d",&a,&s);
a1(a,s);
}

int a1(int x,int y) //函数体
{
int end=0; //若end=1退出函数
for (int i=1;;i++)
{
for (int j=1;j<=i;j++)
{if (x*i==y*j) end=1;} //第一个FOR语句

if(end) {printf("min mulpile=%d",x);break;} //第二个FOR语句

}
return 0;
}

首先,在逻辑上continue完全多余,
其次,break只能跳出一层循环,这里你可以用return 0;
再次,第二个循环的终止条件导致有些数据无解,而第一个循环没有终止条件,所以这时候即使改成return的方式程序也永远不会停止循环.

是是!你还可以用F11来跟踪调试,很好用!