goto,break和continue语句,C语言goto,break和continue跳转语
发布时间:2020-12-15 17:33:47 所属栏目:百科 来源:网络整理
导读:控制程序流程跳转的通常有 goto、break、continue 等语句。 goto语句 goto 语句是一种无条件流程跳转语句,通常 goto 语句与 if 语句结合使用,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。 定义语句标识的格式如下。 语句标识:语句; 其中
控制程序流程跳转的通常有 goto、break、continue 等语句。goto语句goto 语句是一种无条件流程跳转语句,通常 goto 语句与 if 语句结合使用,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。定义语句标识的格式如下。 语句标识:语句; 其中,“语句标识”可以是任一个合法的标识符,如 pos_1、pos_2、label_1、label_2 等都是合法的语句标识。注意,语句标识后的冒号不能省略。goto 语句的调用语法格式为: goto 语句标号; 程序将从对应“语句标号”的代码处开始往下执行。【例 1】分析以下程序,了解 goto 语句的使用。 #include<stdio.h> int main (void){ int n; pos_1: printf("请输入一个正整数:"); scanf("%d",&n); if(n<0) { printf("输入错误!n"); goto pos_1; } printf("成功输入正整数:%dn",n); return 0; }代码分析:在上述程序代码中,有一个语句标号 pos_1。该程序的执行流程如下:
程序运行结果:假设某次运行,依次输入 -2、-6、3 等数字,其运行结果如下: 请输人一个正整数:-2 输入错误! 请输入一个正整数:-6 输入错误! 请输入一个正整数:3 成功输入正整数:3 通过上述执行流程及运行结果的分析,可以发现该例中使用 goto 跳转语句实现了循环的功能。故可以使用循环结构的代码替换该 goto 结构的代码。 等价实现代码: #include<stdio.h> int main (void) { int n; printf ("请输入一个正整数:"); scanf("%d",&n); while(n<0) { printf ("输入错误!n"); printf ("请输入一个正整数:"); scanf("%d",&n); } printf ("成功输入正整数:%dn",n); return 0; }使用 goto 语句可能会造成程序层次不清晰,可读性差,故在实际编程中,应尽量少使用或避免使用 goto 语句。 break语句当执行到循环体中的 break 语句时,将终止 break 所在该层的循环,从该层循环体之后的语句开始继续执行。break 的执行流程如下所示。 单重循环情况:选用 while 循环结构示意,do-while 循环、for 循环同样适用。
while (循环判断表达式) 双重循环情况:使用双重 for 循环嵌套结构示意,其他类型的循环嵌套组合同样适用。
for (;循环判断表达式1;) 【例 2】分析以下程序输出结果,掌握 break 语句的使用方法。 #include<stdio.h> int main (void) { int s=0,i; for(i=1;i<=10;i++) { if (6==i) break; s+=i; } printf("sum=%dn",s); return 0; }当 i< 6时,均不执行 break 语句,可以将其忽略。即 i<6 时,等价于如下代码。 for(i=1;i<=10;i++) { s+=i; }相当于执行了加法运算 s=1+2+3+4+5=15。 当 i=6 时,执行 break 语句,立即终止 break 语句所在的该层 for 循环,故 i=6 并没有累加到 s 上,接着从 for 循环结构后的第一条语句 printf("sum=%dn",s); 处开始继续执行。 程序运行结果为: sum=15 continue语句在循环体中设置 continue 语句,同样可以改变循环的执行流程,只不过它不像 break 那样结束整个循环体,而是仅结束本次循环体的执行,提前进入下一次循环。continue 语句的执行流程如下所示(选用 for 循环结构示意)。
for(初始表达式;循环判断表达式;增量表达式) 【例 3】分析以下程序输出结果,掌握 continue 语句的使用方法。 #include<stdio.h> int main (void) { int s=0,i; for(i=1;i<=10;i++) { if(6==i) continue; s+=i; } printf("sum=%dn",s); return 0; }程序分析: 1) 当 i≠6 时,也就是 i≤5 时,忽略 continue 语句,相当于: for(i=1;i<=10; i++) { s+=i; }即:s=1+2+3+4+5 2) 当 i=6 时,执行 continue 语句,本次循环(i=6)体中 continue 后的语句 s+=i; 将被忽略,接着执行增量表达式 i++,相当于 i=6 没有累加到 s 上。 3) 后续的循环中 i 不再可能等于 6,故 continue 语句也将被忽略。故程序功能相当于把 1?10 中除 6 之外的 9 个数累加到 s 上。即 s=1+2+3+4+5+7+8+9+10=49。 运行结果为: sum=49 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容