oracle goto和continue,goto,break和continue语句,C语言goto,break和continue跳转语句详解...

控制程序流程跳转的通常有 goto、break、continue 等语句。

goto语句

goto 语句是一种无条件流程跳转语句,通常 goto 语句与 if 语句结合使用,当满足一定条件时,程序流程跳转到指定标号处,接着往下执行。

定义语句标识的格式如下。

语句标识:语句;

其中,“语句标识”可以是任一个合法的标识符,如 pos_1、pos_2、label_1、label_2 等都是合法的语句标识。注意,语句标识后的冒号不能省略。

goto 语句的调用语法格式为:

goto 语句标号;

程序将从对应“语句标号”的代码处开始往下执行。

【例 1】分析以下程序,了解 goto 语句的使用。

#include

int main (void){

int n;

pos_1:

printf("请输入一个正整数:");

scanf("%d",&n);

if(n<0)

{

printf("输入错误!\n");

goto pos_1;

}

printf("成功输入正整数:%d\n",n);

return 0;

}

代码分析:在上述程序代码中,有一个语句标号 pos_1。该程序的执行流程如下:

pos_1 标号处。先提示用户“请输入一个正整数:”。

如果用户输入的是正整数,则提示“成功输入正整数:***”。执行第 4 步。

如果用户输入的是负数,则进入循环体,提示“输人错误!”。程序执行流程跳转到 pos_1 处,即跳转到第 1 步,继续往下执行。

程序结束。

程序运行结果:假设某次运行,依次输入 -2、-6、3 等数字,其运行结果如下:

请输人一个正整数:-2

输入错误!

请输入一个正整数:-6

输入错误!

请输入一个正整数:3

成功输入正整数:3

通过上述执行流程及运行结果的分析,可以发现该例中使用 goto 跳转语句实现了循环的功能。故可以使用循环结构的代码替换该 goto 结构的代码。

等价实现代码:

#include

int main (void)

{

int n;

printf ("请输入一个正整数:");

scanf("%d",&n);

while(n<0)

{

printf ("输入错误!\n");

printf ("请输入一个正整数:");

scanf("%d",&n);

}

printf ("成功输入正整数:%d\n",n);

return 0;

}

使用 goto 语句可能会造成程序层次不清晰,可读性差,故在实际编程中,应尽量少使用或避免使用 goto 语句。

break语句

当执行到循环体中的 break 语句时,将终止 break 所在该层的循环,从该层循环体之后的语句开始继续执行。

break 的执行流程如下所示。

单重循环情况:选用 while 循环结构示意,do-while 循环、for 循环同样适用。

while (循环判断表达式)

{

...

if(条件表达式)

break;

循环体中break后的语句;

}

循环体后的第 1 条语句;

循环体后的第 2 条语句;

...

在循环体中,当满足一定条件执行到 break 语句时,终止 break 所在的该层循环,即“循环体中 break 后的语句”部分将不再被执行,程序执行流程转向从“循环结构后的第 1 条语句”处,开始继续往后执行。

双重循环情况:使用双重 for 循环嵌套结构示意,其他类型的循环嵌套组合同样适用。

for (;循环判断表达式1;)

{

...

for(;循环判断表达式2;)

{

...

if(条件表达式)

break;

内层循环体中break后的语句;

}

内层循环结构后的第1条语句; 内层循环结构后的第2条语句;

...

}

在内层循环中,当满足一定条件执行到 break 语句时,仅结束 break 所在内层循环的执行(在本轮外层循环中,“内层循环体中 break 后的语句”部分不再被执行),程序执行流程跳转到“内层循环结构后的第 1 条语句”所在的外层循环体处,开始继续执行。

【例 2】分析以下程序输出结果,掌握 break 语句的使用方法。

#include

int main (void)

{

int s=0,i;

for(i=1;i<=10;i++)

{

if (6==i)

break;

s+=i;

}

printf("sum=%d\n", 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=%d\n",s); 处开始继续执行。

程序运行结果为:

sum=15

continue语句

在循环体中设置 continue 语句,同样可以改变循环的执行流程,只不过它不像 break 那样结束整个循环体,而是仅结束本次循环体的执行,提前进入下一次循环。

continue 语句的执行流程如下所示(选用 for 循环结构示意)。

for(初始表达式;循环判断表达式;增量表达式)

{

...

if(条件表达式)

continue;

循环体中continue后的所有语句;

}

当在上述 for 循环中执行到 continue 语句时,本次循环体的执行流程将跳过“循环体中 continue 后的所有语句”,接着执行“增量表达式”部分,然后执行“循环判断表达式”,即提前进入下一次循环的准备工作。

【例 3】分析以下程序输出结果,掌握 continue 语句的使用方法。

#include

int main (void)

{

int s=0,i;

for(i=1;i<=10;i++)

{

if(6==i)

continue;

s+=i;

}

printf("sum=%d\n",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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值