第五章 逃课(break和continue用法)

第五章 逃课

小故事:

逸凡和同学们上完了一周的课,感觉十分轻松,发现大学里好多下午没有课,可以自己看看书,玩玩。101,国庆节放假一周。101是星期四,星期三下午开始放假。哪知道,星期三下午还有2节课。如果上下午的课再回家,可能就没有车了。逸凡思乡心切,祈祷老师这次上课不点名,决定冒险逃掉星期三下午的课,中午准备行李就回家。逸凡暗自决定以后绝不逃课。

 

一、初次接触

前面,我们用C语言中循环结构输出了上课任务。按理,逸凡每周都应该老老实实地去上星期三的课,但遇到101号(第6周),决定星期三下午冒险逃课提前回家。我们如何编写逃课任务程序呢?C语言中提供了continue语句,加上if语句,可以完成逃课任务。

1:逃课源程序1

#include<stdio.h>

void main()

{

       int TaokeWeek=6;

       int week;

       for(week=5;week<=20;week++)

       {

           printf("逸凡上第%d周星期三上午的课/n",week);

              if(week==TaokeWeek) continue; 

/*强制继续循环,下面的语句不执行*/

              printf("逸凡上第%d周星期三上午的课/n",week);

             

       }

}

程序运行结果:

程序说明:从运行结果来看,逸凡确实逃掉了第6周星期三下午的课。程序利用if语句判断周数是不是逃课周(第6周),如果是,继续循环,不执行下面的语句。所以,没有输出“逸凡上第6周星期三下午的课”。

二、本章知识点

1continue语句

1continue语句一般格式

continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在forwhiledo-while等循环体中,常与if条件语句一起使用,用来加速循环。continue语句用在for语句中格式如下:

 

for(循环变量赋初值;循环条件;循环变量增量)

{    

……

       if(表达式) continue;

……

}

for(week=5;week<=20;week++)

{

   输出星期三上午的课;

  if(week==TaokeWeek) continue;

   输出星期三下午的课;

}

continue语句用在whiledo-while语句中与这类似。

2)注意事项

1continue语句只能用在循环语句的循环体中,其含义是立即结束当前循环,准备进入下一次循环。Continue之后的语句也将不再执行。

2continue语句不是必需的。例如,将例1的程序修改如下:

  ……

if(week==TaokeWeek) continue; 

/*强制继续循环,下面的语句不执行*/

printf("逸凡上第%d周星期三上午的课/n",week);

……

 

  ……

if(week!=TaokeWeek)    

{

printf("逸凡上第%d周星期三上午的课/n",week);

}

……

2break语句

1break语句一般格式

上课一周下来,英语老师发现个别同学整天躲在宿舍里打游戏,逃课次数太多,非常生气,决定警告他们,如果谁在第7周逃英语课,以后的课就别上了,没有资格参加英语考试。这时,可以用break语句来解决这个问题。

break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出满足switch条件的分支而执行switch以后的语句。breakswitch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。

break语句用于do-whileforwhile循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起,即满足条件时便跳出循环。

while(表达式1)

{   ……

if(表达式2) break;

……

}

while(周数小于等于20)

{

    输出请参加英语学习;

如果第7周逃课  break;

输出参加英语学习的时间;

}

2:逃课源程序2

#include<stdio.h>

void main()

{

       int TaokeWeek=7;

       int week=5;

 

       while(week<=20)

       {   printf("请参加第%d周英语课学习,早日考过四级!/n",week);

              if(TaokeWeek ==week)        break;

              /*立即跳出(结束)循环,执行循环之后的语句*/

           printf("上第%d周星期一的英语课/n",week);

              printf("上第%d周星期三的英语课/n",week);

              printf("上第%d周星期五的英语课/n",week);

              week++;

       }

       if(TaokeWeek ==week)

        printf("逃课的同学没有资格参加英语期末考试!/n");

}

程序运行结果:

 

程序说明:第7周,真的有人逃课了,结果是“逃课的同学没有资格参加英语期末考试!”程序利用if语句判断周数是不是逃课周(第7周),如果是,立即退出循环,直接执行循环之后的语句。

2)注意事项

1)结束switch语句的某个分支的执行;

2)退出包含它的最内层循环语句(循环可以多层嵌套);

3break语句一般作为if语句的子句,用于实现进一步的循环控制。

4break语句也不是必需的,但使用它能够使程序清晰明了。

三、模仿学习

3:使用循环结构和break语句编写求出小于n的所有素数(质数)。

解题思路:(1)首先需要判断小于n的所有数是不是素数,这是一个重复任务。(2)判断一个数m是否为素数,最直接的做法是:用23sqrt(m)去除m,如果其中有一个数能整除m,直接退出判断素数的循环,输出m不是素数,否则,输出m为素数。

源程序如下:

#include<stdio.h>

#include<math.h>

void main()

{

    int n;

    int m;

    int j;

    int k;

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

    scanf("%d",&n);

   

    if(n<2) return;

    printf("2是素数/n");

   

    for(m=3; m<n; m+=2)

    {  

        j=2;

        k=(int)sqrt(m);/*sqrt(m)赋给变量k*/

        /*2k的数去除m,如果其中有一个数能整除m,退出判断素数的循环 */

        while(j<= k)

{

            if(m%j==0)  break;

            j++;

        }

/*如果j小于等于k,说明m%j等于0,则m有因子,不是素数*/

        if(j>k)

            printf("%d是素数/n",m);

    }

}

程序运行结果:

 

程序说明:使用break语句退出循环后,需要用if语句来判断循环语句是正常结束,还是中途退出,然后再做其他操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值