一、break
#include
#include
int main()
{
int i,n;
for(i = 1; ;i++)
{
if(i%5==1&& i%6==5 && i%7==4 && i%11==10)
{
printf("i=%dn",i);
break;
}
}
return 0;
}
二、使用标志变量,使可读性更好
#include
#include
int main()
{
int i,n;
int x=0;
for(i = 1;!x;i++)
{
if(i%5==1&& i%6==5 && i%7==4 && i%11==10)
{
printf("i=%dn",i);
x = 1;
}
}
return 0;
}
#include
#include
int main()
{
int i=0;
do{
i++;
}
while(!(i%5==1&& i%6==5 && i%7==4 && i%11==10));
printf("i=%dn",i);
return 0;
}
三、goto指向型语句,直接指向结尾处
#include
#include
int main()
{
int i;
for(i=1; ;i++)
{
if(i%5==1 && i%6==5 && i%7==4 && i%11==10)
{
printf("i = %dn", i);
goto END;
}
}
END: ;
return 0;
}
四、exit(0) 执行强制返回操作,其参数为0时表示程序正常退出,非0时表示程序出现错误后退出。
#include
#include
int main()
{
int i;
for(i=1; ;i++)
{
if(i%5==1 && i%6==5 && i%7==4 && i%11==10)
{
printf("i = %dn", i);
exit(0);
}
}
return 0;
}
若无上限,则会陷入死循环
break 循环立刻终止,从循环语句后的第一条语句开始执行
continue 中断此次循环,开始下次循环
鸡兔同笼问题穷举法求解:
通俗解:
#include
#include
int main()
{
int x , y;
for(x=1;x<=98;x++)
{
for(y=1;y<=98;y++)
{if(x+y==98 && x+2*y==193)
{printf("鸡有:%d 兔子有:%dn", x, y);
}
}
}
return 0;
}
优化解:
#include
#include
int main()
{
int x , y;
for(x=1;x<=98;x++)
{
y = 98-x;
if(x+2*y==193)
{printf("鸡有:%d 兔子有:%dn", x, y);
}
}
return 0;
}



