前言
在编写代码的过程中,有时需要用到到多层while循环,当在内层的循环中但是想要跳出所有的while循环之外时,简单的使用break语句仅仅只能跳出一层while,已经不能满足要求,以下总结了最近学到的几种方法。
一、题目示例
如何实现当输入a为15,输入b为-3后,跳出所有while循环,去执行最后的输出结束语句?
二、解决方法
1.使用goto语句
代码如下(示例):
#include <stdio.h>
int main()
{
int a, b, c;
printf("请输入a:");
scanf("%d", &a);
while (a > 0)
{
while (a > 5)
{
while (a > 10)
{
printf("请输入b:");
scanf("%d", &b);
if (b < 0)
{
goto end;
}
}
}
}
end:
printf("程序结束!!!\n");
return 0;
}
运行结果 
2.使用状态标志
代码如下(示例):
#include <stdio.h>
int main()
{
int a, b, c = 1;
printf("请输入a:");
scanf("%d", &a);
while (c==1 && a > 0)
{
while (c==1 && a > 5)
{
while (a > 10)
{
printf("请输入b:");
scanf("%d", &b);
if (b < 0)
{
c = 0;
break;
}
}
}
}
printf("程序结束!!!\n");
return 0;
}
运行结果 
总结
提示:goto语句虽然好用,但是有时候会导致代码混乱,所有要少用。使用状态标识很多时候可以很好的解决问题。
|