您的位置:首页 > 产品设计 > UI/UE

break和continue

2015-05-28 18:06 351 查看
break 和 continue
  break用于循环,则用于终止循环
  break用于switch,则用于终止switch
  break不能直接用于if,除非if属于循环内部的一个子句。
  当有多层循环时,break只能终止距离它最近的循环
  当多层switch嵌套时,break只能终止距离它最近的switch

continue 用于跳过本次循环余下的语句,转去判断是否需要执行下次循环

例子:

1.

for(1; 2; 3)
{
A;
B;
continue;//如果执行该语句,则会执行语句3,C和D都会被跳过去,不会被执行
C;
D;
}


2.

while (表达式)    //当把for循环转化成while语句时,语句3一定要在continue之前
{
A;
B;
continue;//如果执行该语句,则会执行表达式,C和D都会被跳过去,不会被执行
C;
D;
}


如:

char ch;
while( (ch=getchar()) != '\n')
  continue;


详见scanf对用户非法输入的处理

1. break不能直接用于if, 除非if属于循环内部的一个子句:

# include <stdio.h>

int main(void)
{
int i;
/*
switch (2)
{
case 2:
printf("哈哈!\n");
break;  //OK, break可以用于switch
}

*/

for (i=0; i<3; ++i )
{
if (3 > 2)
break;  //break虽然是if内部的语句,但break终止的是外部的for循环
printf("嘿嘿!\n");
}

return 0;
}


break用于多个for循环,只能终止离它最近的:

# include <stdio.h>

int main(void)
{
int i, j;

for (i=0; i<3; ++i)
{
for (j=1; j<4; ++j)
break;  //break只能终止距离它最近的循环
printf("同志们好!\n");
}

return 0;
}


switch + break的用法_电梯程序:

# include <stdio.h>

int main(void)
{
int val;

printf("请输入您要进入的楼层: ");
scanf("%d", &val);

switch (val)
{
case 1:
printf("1层开!\n");
break;
case 2:
printf("2层开!\n");
break;
case 3:
printf("3层开!\n");
break;
default:
printf("没有盖到这一层!\n");
break;
}

return 0;
}


多层switch嵌套与break的用法:

/*
时间:2015年2月7日20:06:10
描述:测试break在多层switch中的用法
功能:当多层switch嵌套时,break只能终止距离它最近的switch
*/
# include <stdio.h>

int main (void)
{
int x =1, y = 0, a = 0, b = 0;

switch (x)
{
case 1 :
switch (y)
{
case 0 :
a++;
break;        //break只能终止距离它最近的switch
case 1 :
b++;
break;
}
b = 100;        //如果break终止内层switch,则b = 100,如果终止外层switch,则b = 0
break;
case 2 :
a++;
break;
}

printf("a = %d b = %d\n", a, b);

/*
2015年2月7日20:11:15
当有多层循环时,break只能终止距离它最近的循环
break不能直接用于if,除非if属于循环内部的一个子句。
如:if (3 > 2)
break;        //错误
*/
int i, j;
for (i=0; i<3; i++)
{
for (j=0; j<3; j++)
{
if (3 > 2)
break;        //if是循环的子句,OK,break虽然是if的子句,但是终止的是内层for循环
printf("终止if!\n");//如果break终止if,则此句会输出
}
printf("终止最近的for循环!\n");//break终止内层循环,此句会输出3次!
}
return 0;
}
/*
在VC++6.0输出结果是:
----------------------------
a = 1 b = 100
终止最近的for循环!
终止最近的for循环!
终止最近的for循环!
Press any key to continue
----------------------------
*/


一元二次方程_do...while人机交互

/*
时间:2015年2月7日18:34:21
描述:使用 do...while 人机交互连续计算一元二次方程的解
功能:
*/

# include <stdio.h>
# include <math.h>
int main (void)
{
double a, b, c;
double delta;
double x1, x2;
char ch;

do
{
printf("请输入一元二次方程的3个系数:\n");
printf("a = ");
scanf("%lf", &a);

printf("b = ");
scanf("%lf", &b);

printf("c = ");
scanf("%lf", &c);

delta = b*b - 4*a*c;

if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (0 == delta)
{
x1 = (-b) / (2*a);
printf("有唯一解:x1 = x2 = %lf\n", x1);
}
else
printf("无实数解!\n");

printf("是否需要继续(Y/N)?\n");
scanf(" %c", &ch);        //注意%c之前要有一个空格,原因略

} while ('y'==ch || 'Y'==ch);

return 0;
}
/*
在VC++6.0输出结果是:
----------------------------
请输入一元二次方程的3个系数:
a = 1
b = 2
c = 1
有唯一解:x1 = x2 = -1.000000
是否需要继续(Y/N)?
y
请输入一元二次方程的3个系数:
a = 1
b = 5
c = 6
有两个解,x1 = -2.000000, x2 = -3.000000
是否需要继续(Y/N)?
Y
请输入一元二次方程的3个系数:
a = 4
b = 1
c = 4
无实数解!
是否需要继续(Y/N)?
n
Press any key to continue
----------------------------
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: