6.5 break语句和continue语句
考点5 break语句
真考链接
考点5难度适中,属于重点掌握知识点,运用范围只限于switch语句。考核概率为60%。
在break后面加上分号就可以构成break语句。
在介绍选择结构时,我们已经知道 break 语句可以使程序流程跳出switch结构,继续执行switch语句之外的语句。实际上,break语句还可以用于从循环体内跳出,即提前结束循环。
说明:
(1)break语句只能出现在循环体内及switch语句内,不能用于其他语句。
(2)当break出现在循环体中的switch语句体内时,其作用只是跳出该switch语句体。当break出现在循环体中,但并不在switch语句体内时,则在执行break后,跳出本层循环,当然也不再去进行条件判断。
真题精选
【例1】在以下程序中,判断i>j共执行了( )次。
#include <stdio.h>
main()
{ int i=0,j=10,k=2,s=0;
for(;;)
{ i+ =k;
if(i>j)
{ printf("% d",s);
break;
}
s+ =i;
}
}
A.4 B.7 C.5 D.6
【答案】D
【解析】本例涉及 break语句,重在循环次数的判定。本例的循环由于无外出口,只能借助break语句终止。鉴于题目要求说明判断i>j的执行次数,只需考查经过i+=k运算如何累计i的值(每次累计i的值,都会累计判别i>j一次),i值分别是i=2、4、6、8、10、12,当i的值为12时判断i>j为真,程序输出s的值并结束,共循环6次。
【例2】下列给定程序中函数fun的功能是:计算并输出high以内最大的10个素数的和。high的值由主函数传给fun函数。
例如,若high的值为100,则函数的值为732。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
#include <conio.h>
#include <stdio.h>
#include <math.h>
int fun(int high)
{ int sum=0,n=0,j,yes;
/**********found**********/
while((high> =2)&&(n<10)
{ yes=1;
for(j=2;j< =high/2;j++)
if(high% j==0)
{ /**********found**********/
yes=0;break
}
if(yes)
{ sum+ =high;
n++;
}
high--;
}
return sum;
}
main()
{ printf("% d",fun(100));}
【答案】(1)while((high>=2)&&(n<10))
(2)yes=0;break;
【解析】本题考查:C语言程序的语法格式。
第一处while循环条件丢掉一个括号,第二处是很简单的程序语法错误,没有加分号。
考点6 continue语句
真考链接
考点6难度适中,是应重点掌握的知识点。在不同的循环体语句中使用,其作用方式不同。选择题中考核概率为30%。在操作题中的考核概率为10%。
与break语句一样,在continue后加上分号就构成continue语句。
其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,而转去重新判定循环条件是否成立,从而确定下一次循环是否继续执行。
与break语句不同,执行continue语句并没有使整个循环终止。在while和do…while循环中,continue语句使得流程直接跳到循环控制的条件判断部分,然后决定循环是否继续执行。在for循环中,遇到continue后,跳过循环体中余下的语句,而去求解for语句中的“表达式3”的值,然后再次对“表达式2”的条件进行判断,最后根据“表达式2”的值来决定for循环是否继续执行。continue不管是作为何种语句中的成分,都按上述功能执行。
continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行;而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
常见问题
continue语句只能出现在循环语句的循环体中。当出现在不同循环语句中时,continue分别是如何起作用的呢?
若执行while或do…while语句中的continue语句,则跳过循环体中continue语句后面的语句,直接转去判别下次循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue语句后面的语句,转而执行for语句的表达式3。
真题精选
【例1】以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int i;
for(i=1;i< =5;i++)
{ if(i% 2)putchar('< ');
else continue;
putchar('> ');
}
putchar('#');
}
A.<><><># B.><><><# C.<><># D.><><#
【答案】A
【解析】本例考查continue语句的基本使用方法。在程序中,当i%2为真时,执行输出语句,否则执行continue语句,即开始i++运算,进入下一次循环,即当i是偶数时(i%2为0)无任何输出。
【例2】以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int y=10;
for(;y>0;y--)
if(y% 3==0)
{ printf("% d",--y);
continue;
}
}
A.741 B.852 C.963 D.8754321
【答案】B
【解析】for循环的循环控制变量y的初值是10,每循环一次y减1,因此y的值由10变化到1。for循环中只包含了一条if语句,if子句是一个复合语句。if后的表达式y%3==0表示只有y的值能被3整除时,其后的子句才执行。已知y由10变化到1,当y的值分别为9、6、3 时才会执行if子句中的printf语句,进行输出。输出的值应是8、5、2。continue语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句。就本题而言,在if语句之后,不再有余下尚未执行的语句,因此就接着判断是否执行下一次循环。由此可见,在本题中,continue是虚设的,不起任何作用。