您的位置:首页 > 产品设计 > UI/UE

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

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

一、初次接触
前面,我们用C语言中循环结构输出了上课任务。按理,逸凡每周都应该老老实实地去上星期三的课,但遇到10月1号(第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周星期三下午的课”。
二、本章知识点
1.continue语句
(1)continue语句一般格式
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。continue语句用在for语句中格式如下:

for(循环变量赋初值;循环条件;循环变量增量)
{
……
if(表达式) continue;
……
}
for(week=5;week<=20;week++)
{
输出星期三上午的课;
if(week==TaokeWeek) continue;
输出星期三下午的课;
}
continue语句用在while和do-while语句中与这类似。
(2)注意事项
1)continue语句只能用在循环语句的循环体中,其含义是立即结束当前循环,准备进入下一次循环。Continue之后的语句也将不再执行。
2)continue语句不是必需的。例如,将例1的程序修改如下:
……
if(week==TaokeWeek) continue;
/*强制继续循环,下面的语句不执行*/
printf("逸凡上第%d周星期三上午的课/n",week);
……

……
if(week!=TaokeWeek)
{
printf("逸凡上第%d周星期三上午的课/n",week);
}
……
2.break语句
(1)break语句一般格式
上课一周下来,英语老师发现个别同学整天躲在宿舍里打游戏,逃课次数太多,非常生气,决定警告他们,如果谁在第7周逃英语课,以后的课就别上了,没有资格参加英语考试。这时,可以用break语句来解决这个问题。
break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出满足switch条件的分支而执行switch以后的语句。break在switch 中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常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)退出包含它的最内层循环语句(循环可以多层嵌套);
3)break语句一般作为if语句的子句,用于实现进一步的循环控制。
4)break语句也不是必需的,但使用它能够使程序清晰明了。
三、模仿学习
例3:使用循环结构和break语句编写求出小于n的所有素数(质数)。
解题思路:(1)首先需要判断小于n的所有数是不是素数,这是一个重复任务。(2)判断一个数m是否为素数,最直接的做法是:用2、3、…,sqrt(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*/
/*用2到k的数去除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语句来判断循环语句是正常结束,还是中途退出,然后再做其他操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: