前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环结构(三)

循环结构(三)

作者头像
pigeon
发布2022-04-11 17:46:34
3350
发布2022-04-11 17:46:34
举报
文章被收录于专栏:电子荣耀

改变循环的执行流程

无论哪种循环语句,正常执行情况下都是由“循环条件”来决定是否结束循环的执行。但在实际程序设计中有时需要根据循环执行情况的变化而“提前”结束循环执行或跳过本次循环的剩余语句进入下一次循环的情况。C语言使用break语句和continue语句解决这些问题。

break语句

1. break语句

break语句可以应用循环语句中,用于跳出循环体。下面对break语句的使用进行详细说明:

(1) 一般形式:break;

(2) break语句只能用于switch、while、do-while和for语句中。

(3) break语句的作用是结束“直接包含”它的循环或switch语句的执行,即它只能跳出包含它的一层语句结构。当break出现循环语句的嵌套结构时,只能跳出包含它的最内层循环;当break出现在循环语句与switch语句的嵌套结构时,同样只能跳出包含它的最内层的switch语句或循环语句。

例:输入一个正整数判断并输出它是否是素数。

思路分析:素数也称为质数,其数学定义为:一个大于1的正整数,除了1和它本身外,不能被整除以其他正整数。

根据定义,该问题可以采用穷举法进行实现,即对于正整数n,从2开始到√n依次尝试每个数是否能够被n整除,如果存在能够这样的数,则n不是素数;如果不存在这样的数,则n是素数。

进一步分析可以知道,在找到第一个可以整除的数后,无需继续检查,直接结束循环即可。

参考答案:

代码语言:javascript
复制
 #include <stdio.h>
   #include <math.h>
   int main()
   {
       int i, n, is_prime, k;
       printf("Input a number(>1): ");
       scanf("%d", &n);
       is_prime = ;     //假设n是素数
       k = sqrt(n);      //计算n的平方根
       for(i=; i<=k; i++)
       {
           if(n%i == )
           {
               is_prime = ;   //n不是素数
               break;          //发现第一个因子就可以确定不是素数,直接结束循环
           }
       }
       if(is_prime)
       {
           printf("%d is prime number\n", n);
       }
       else
       {
           printf("%d is not prime number\n", n);
       }
       return ;
   }

结果示例:

continue语句

2. continue语句

有时并不希望终止整个循环的执行,而只是提前结束本次循环迭代,进入下一次循环迭代。这时可以使用continue语句,其使用方法如下:

(1) 一般形式:continue;

(2) continue语句只能用于while、do-while和for语句中。

(3) continue语句的作用是结束循环体的本次执行,即跳过循环体中continue语句之后的其它语句,转去判定循环条件,决定能否继续执行循环。

用于while和do-while语句中时,跳过循环体中continue语句之后的其它语句后,直接判断循环条件是否成立;而用于for语句中时,跳过循环体中continue语句之后的其它语句后,先执行表达式3,然后再去判断循环条件是否成立。

例:统计在100到1000之间不能被7整除的整数的个数。

思路分析:解决该问题需要对指定范围中的每一个整数进行检查,如果不能被7整除,就进行计数加1;若能被7整除,则不加1。

参考答案:

代码语言:javascript
复制
#include <stdio.h>
   int main()
   {
       int i, count;
       count = ; //计数初始为0
       for(i=; i<=; i++)
       {
           if(i% == )
           {
               continue; //如果整除7,跳过计数语句,继续检查下一个数
           }
           count = count+; //计数加1
       }
       printf("count=%d\n", count);
       return ;
   }

结果示例:

goto语句

3. goto语句

goto语句也称为无条件转移语句,其一般格式如下:

goto 语句标号;

如:

label: i++;

loop: while(x<7)

C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。

goto语句通常与条件语句配合使用,可用来实现条件转移、构成循环和跳出循环体等功能。

但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。

例:使用goto语句实现求1+2+3+…+100的值。

参考答案:

代码语言:javascript
复制
#include<stdio.h>
#include<stdlib.h>

int main()
{
     int i=,sum=;
     loop:
      sum=sum+i;
       i++;
       if(i<=)goto loop;
printf("sum=%d\n",sum);
return ;
}

结果示例:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 电子荣耀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档