标签:
break 和 continue
break用于循环,则用于终止循环
break用于switch,则用于终止switch
break不能直接用于if,除非if属于循环内部的一个子句。
当有多层循环时,break只能终止距离它最近的循环
当多层switch嵌套时,break只能终止距离它最近的switch
continue 用于跳过本次循环余下的语句,转去判断是否需要执行下次循环
例子:
1.
1 for(1; 2; 3)
2 {
3 A;
4 B;
5 continue;//如果执行该语句,则会执行语句3,C和D都会被跳过去,不会被执行
6 C;
7 D;
8 }
2.
1 while (表达式) //当把for循环转化成while语句时,语句3一定要在continue之前
2 {
3 A;
4 B;
5 continue;//如果执行该语句,则会执行表达式,C和D都会被跳过去,不会被执行
6 C;
7 D;
8 }
如:
1 char ch;
2 while( (ch=getchar()) != ‘\n‘)
3 continue;
详见scanf对用户非法输入的处理
1. break不能直接用于if, 除非if属于循环内部的一个子句:
1 # include <stdio.h>
2
3 int main(void)
4 {
5 int i;
6 /*
7 switch (2)
8 {
9 case 2:
10 printf("哈哈!\n");
11 break; //OK, break可以用于switch
12 }
13
14 */
15
16 for (i=0; i<3; ++i )
17 {
18 if (3 > 2)
19 break; //break虽然是if内部的语句,但break终止的是外部的for循环
20 printf("嘿嘿!\n");
21 }
22
23 return 0;
24 }
break用于多个for循环,只能终止离它最近的:
1 # include <stdio.h>
2
3 int main(void)
4 {
5 int i, j;
6
7 for (i=0; i<3; ++i)
8 {
9 for (j=1; j<4; ++j)
10 break; //break只能终止距离它最近的循环
11 printf("同志们好!\n");
12 }
13
14 return 0;
15 }
switch + break的用法_电梯程序:
1 # include <stdio.h>
2
3 int main(void)
4 {
5 int val;
6
7 printf("请输入您要进入的楼层: ");
8 scanf("%d", &val);
9
10 switch (val)
11 {
12 case 1:
13 printf("1层开!\n");
14 break;
15 case 2:
16 printf("2层开!\n");
17 break;
18 case 3:
19 printf("3层开!\n");
20 break;
21 default:
22 printf("没有盖到这一层!\n");
23 break;
24 }
25
26 return 0;
27 }
多层switch嵌套与break的用法:
1 /* 2 时间:2015年2月7日20:06:10 3 描述:测试break在多层switch中的用法 4 功能:当多层switch嵌套时,break只能终止距离它最近的switch 5 */ 6 # include <stdio.h> 7 8 int main (void) 9 { 10 int x =1, y = 0, a = 0, b = 0; 11 12 switch (x) 13 { 14 case 1 : 15 switch (y) 16 { 17 case 0 : 18 a++; 19 break; //break只能终止距离它最近的switch 20 case 1 : 21 b++; 22 break; 23 } 24 b = 100; //如果break终止内层switch,则b = 100,如果终止外层switch,则b = 0 25 break; 26 case 2 : 27 a++; 28 break; 29 } 30 31 printf("a = %d b = %d\n", a, b); 32 33 /* 34 2015年2月7日20:11:15 35 当有多层循环时,break只能终止距离它最近的循环 36 break不能直接用于if,除非if属于循环内部的一个子句。 37 如:if (3 > 2) 38 break; //错误 39 */ 40 int i, j; 41 for (i=0; i<3; i++) 42 { 43 for (j=0; j<3; j++) 44 { 45 if (3 > 2) 46 break; //if是循环的子句,OK,break虽然是if的子句,但是终止的是内层for循环 47 printf("终止if!\n");//如果break终止if,则此句会输出 48 } 49 printf("终止最近的for循环!\n");//break终止内层循环,此句会输出3次! 50 } 51 return 0; 52 } 53 /* 54 在VC++6.0输出结果是: 55 ---------------------------- 56 a = 1 b = 100 57 终止最近的for循环! 58 终止最近的for循环! 59 终止最近的for循环! 60 Press any key to continue 61 ---------------------------- 62 */
一元二次方程_do...while人机交互
1 /* 2 时间:2015年2月7日18:34:21 3 描述:使用 do...while 人机交互连续计算一元二次方程的解 4 功能: 5 */ 6 7 # include <stdio.h> 8 # include <math.h> 9 int main (void) 10 { 11 double a, b, c; 12 double delta; 13 double x1, x2; 14 char ch; 15 16 do 17 { 18 printf("请输入一元二次方程的3个系数:\n"); 19 printf("a = "); 20 scanf("%lf", &a); 21 22 printf("b = "); 23 scanf("%lf", &b); 24 25 printf("c = "); 26 scanf("%lf", &c); 27 28 delta = b*b - 4*a*c; 29 30 if (delta > 0) 31 { 32 x1 = (-b + sqrt(delta)) / (2*a); 33 x2 = (-b - sqrt(delta)) / (2*a); 34 printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2); 35 } 36 else if (0 == delta) 37 { 38 x1 = (-b) / (2*a); 39 printf("有唯一解:x1 = x2 = %lf\n", x1); 40 } 41 else 42 printf("无实数解!\n"); 43 44 printf("是否需要继续(Y/N)?\n"); 45 scanf(" %c", &ch); //注意%c之前要有一个空格,原因略 46 47 } while (‘y‘==ch || ‘Y‘==ch); 48 49 return 0; 50 } 51 /* 52 在VC++6.0输出结果是: 53 ---------------------------- 54 请输入一元二次方程的3个系数: 55 a = 1 56 b = 2 57 c = 1 58 有唯一解:x1 = x2 = -1.000000 59 是否需要继续(Y/N)? 60 y 61 请输入一元二次方程的3个系数: 62 a = 1 63 b = 5 64 c = 6 65 有两个解,x1 = -2.000000, x2 = -3.000000 66 是否需要继续(Y/N)? 67 Y 68 请输入一元二次方程的3个系数: 69 a = 4 70 b = 1 71 c = 4 72 无实数解! 73 是否需要继续(Y/N)? 74 n 75 Press any key to continue 76 ---------------------------- 77 */
标签:
原文地址:http://www.cnblogs.com/moon1992/p/4536593.html