内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第14练,内容是4.5 break语句和continue语句、4.6 循环结构程序设计实例。
《编程语言基础——C语言》(第5版)一课一练 第14练
4.5 break语句和continue语句、4.6 循环结构程序设计实例
一、单选题
1. 以下关于break语句的描述中,正确的是( )
A. break语句可以用于循环结构和switch结构中
B. break语句的功能局限在switch结构
C. break语句的功能局限在while循环中
D. break语句可以用于函数的任何位置
2. continue语句的作用是( )
A. 终止整个循环的执行
B. 跳过循环体中continue后面的语句,进入下一轮循环
C. 退出当前函数
D. 暂停程序执行
3. 关于break和continue的区别,以下说法正确的是( )
A. break和continue的功能完全相同
B. break结束本轮循环,continue结束整个循环
C. break结束整个循环,continue结束本轮循环
D. break和continue都服务于if语句
4. 在嵌套循环中,break语句执行时将( )
A. 跳出所有循环
B. 结束程序运行
C. 继续执行外层循环的下一轮
D. 跳出一层循环,即break所在的最内层循环
5. 有以下程序段:
int i, sum = 0;
for (i = 1; i <= 10; i++)
{ if (i % 3 == 0) continue;
sum += i;
}
程序运行后sum的值是( )
A. 37
B. 55
C. 55减去3、6、9的和
D. 18
6. 有以下程序段:
int x = 0;
while (x < 10)
{ x++;
if (x == 5) break;
printf("%d ", x);
}
程序的输出结果是( )
A. 1 2 3 4 5
B. 1 2 3 4 5 6 7 8 9 10
C. 1 2 3 4
D. 0 1 2 3 4
7. 在判断一个数是否为素数的程序中,以下描述最准确的是( )
A. 需要试除到该数减1
B. 试除范围从2到该数的平方根即可,一旦发现整除就可用break提前结束循环
C. 试除范围从2到该数的一半即可,无需break
D. 素数判断不需要使用循环
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int i, s = 0;
for (i = 1; i <= 20; i++)
{
if (i % 2 == 0) continue;
if (i > 12) break;
s += i;
}
printf("s=%d
", s);
}
三、程序填空题
9. 以下程序的功能是:计算1到100之间所有能被3整除但不能被5整除的数的和。请填空。
#include <stdio.h>
main()
{
int i, sum = 0;
for (i = 1; i <= 100; i++)
{
if (______【1】______)
continue;
sum += i;
}
printf("sum=%d
", sum);
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是输出100到200之间的所有素数。程序中有1处需要改进的地方,请指出所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 #include <math.h>
L3 main()
L4 {
L5 int num, j, tag, m;
L6 for (num = 101; num < 200; num += 2)
L7 {
L8 tag = 1;
L9 m = sqrt(num);
L10 for (j = 2; j <= m; j++)
L11 if (num % j == 0)
L12 {
L13 tag = 0;
L14 break;
L15 }
L16 if (tag == 1)
L17 printf("%5d", num);
L18 }
L19 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第14练,内容是4.5 break语句和continue语句、4.6 循环结构程序设计实例。
《编程语言基础——C语言》(第5版)一课一练 第14练
4.5 break语句和continue语句、4.6 循环结构程序设计实例
一、单选题
1. 以下关于break语句的描述中,正确的是( )
A. break语句可以用于循环结构和switch结构中
B. break语句的功能局限在switch结构
C. break语句的功能局限在while循环中
D. break语句可以用于函数的任何位置
【答案】A
【解析】break语句适用于3种循环结构(while、do-while、for)和switch结构,但不能用于除循环和switch以外的其他地方。
2. continue语句的作用是( )
A. 终止整个循环的执行
B. 跳过循环体中continue后面的语句,进入下一轮循环
C. 退出当前函数
D. 暂停程序执行
【答案】B
【解析】continue语句的作用是跳过循环体中该语句后面的所有语句,提前结束本轮循环,直接进入下一轮循环。注意continue结束的是本轮循环而非整个循环。
3. 关于break和continue的区别,以下说法正确的是( )
A. break和continue的功能完全相同
B. break结束本轮循环,continue结束整个循环
C. break结束整个循环,continue结束本轮循环
D. break和continue都服务于if语句
【答案】C
【解析】break与continue的核心区别:break结束整个循环(跳出循环),continue结束的是本轮循环(跳过本次循环中continue后面的语句),然后继续下一轮循环。
4. 在嵌套循环中,break语句执行时将( )
A. 跳出所有循环
B. 结束程序运行
C. 继续执行外层循环的下一轮
D. 跳出一层循环,即break所在的最内层循环
【答案】D
【解析】在多重循环(嵌套循环)中,break语句跳出的是一层循环,即它所在的最内层循环(包括它所在的switch)。外层循环不受影响。
5. 有以下程序段:
int i, sum = 0;
for (i = 1; i <= 10; i++)
{ if (i % 3 == 0) continue;
sum += i;
}
程序运行后sum的值是( )
A. 37
B. 55
C. 55减去3、6、9的和
D. 18
【答案】A
【解析】i从1到10,当i为3、6、9时执行continue跳过sum+=i。实际累加1+2+4+5+7+8+10=37。选项C描述了逻辑但不是具体数值。
6. 有以下程序段:
int x = 0;
while (x < 10)
{ x++;
if (x == 5) break;
printf("%d ", x);
}
程序的输出结果是( )
A. 1 2 3 4 5
B. 1 2 3 4 5 6 7 8 9 10
C. 1 2 3 4
D. 0 1 2 3 4
【答案】C
【解析】x从0开始,每次先x++再判断。输出序列:x=1时输出1,x=2时输出2,x=3时输出3,x=4时输出4,x=5时break跳出循环。
7. 在判断一个数是否为素数的程序中,以下描述最准确的是( )
A. 需要试除到该数减1
B. 试除范围从2到该数的平方根即可,一旦发现整除就可用break提前结束循环
C. 试除范围从2到该数的一半即可,无需break
D. 素数判断不需要使用循环
【答案】B
【解析】判断素数时,循环不必运行到num-1,将循环次数控制到sqrt(num)即可。当找到约数对(如6,6)后,之后的约数就都重复了。配合break可在发现整除时提前结束循环。
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int i, s = 0;
for (i = 1; i <= 20; i++)
{
if (i % 2 == 0) continue;
if (i > 12) break;
s += i;
}
printf("s=%d
", s);
}
【答案】s=36
【解析】i从1到20:奇数时累加,偶数时跳过。当i>12时break。累加的奇数:1+3+5+7+9+11=36。i=13时break,最终输出s=36。
三、程序填空题
9. 以下程序的功能是:计算1到100之间所有能被3整除但不能被5整除的数的和。请填空。
#include <stdio.h>
main()
{
int i, sum = 0;
for (i = 1; i <= 100; i++)
{
if (______【1】______)
continue;
sum += i;
}
printf("sum=%d
", sum);
}
【答案】【1】i % 3 != 0 || i % 5 == 0
【解析】题目要求能被3整除同时不能被5整除才累加。使用continue跳过不符合条件的数:i%3!=0表示不能被3整除,i%5==0表示能被5整除,两者满足其一即执行continue跳过。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是输出100到200之间的所有素数。程序中有1处需要改进的地方,请指出所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 #include <math.h>
L3 main()
L4 {
L5 int num, j, tag, m;
L6 for (num = 101; num < 200; num += 2)
L7 {
L8 tag = 1;
L9 m = sqrt(num);
L10 for (j = 2; j <= m; j++)
L11 if (num % j == 0)
L12 {
L13 tag = 0;
L14 break;
L15 }
L16 if (tag == 1)
L17 printf("%5d", num);
L18 }
L19 }
【答案】程序逻辑本身正确。改进建议:在L5声明区增加 int cnt = 0;,在L17 printf后增加 cnt++; if(cnt%12==0) printf("
");,使每行输出12个素数后换行,格式更整齐。
【解析】该程序逻辑完整正确:外层for遍历101~199的奇数,内层for检测是否素数,tag为1表示是素数则输出。改进点在于输出格式——缺少换行控制会让所有素数挤在同一行,不符合教材例4-10的规范。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$