内容正文:
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第12练,内容是4.1 while循环、4.2 do-while循环。
《编程语言基础——C语言》(第5版)一课一练 第12练
4.1 while循环、4.2 do-while循环
一、单选题
1. 以下选项中,while语句的正确格式是( )
A. while(表达式) { 语句序列 }
B. while { 语句序列 } (表达式)
C. while[表达式] { 语句序列 }
D. while(语句序列) { 表达式 }
2. 在while循环中,如果首次判断条件就为假(值为0),循环体将( )
A. 一次也不执行
B. 执行一次后结束
C. 无限循环
D. 执行两次后结束
3. 以下关于while循环三要素的描述中,不正确的是( )
A. 循环变量在while之前需要赋初值
B. while后的括号内是循环继续的条件
C. 循环变量的调整必须写在循环体的第一行
D. 循环变量调整的目的是使循环能够终止
4. 关于do-while语句,正确的描述是( )
A. 先判断条件,再执行循环体
B. 先执行循环体,再判断条件
C. 与while循环的执行过程完全相同
D. 条件为真时循环立即结束
5. 设初始条件为假,比较以下两段程序:
程序1: while(条件){ 循环体; }
程序2: do{ 循环体; }while(条件);
以下说法正确的是( )
A. 程序1执行1次循环体,程序2执行0次
B. 程序1执行1次循环体,程序2执行1次
C. 程序1执行0次循环体,程序2执行1次
D. 两程序都执行0次循环体
6. 对于do-while循环,以下说法正确的是( )
A. do-while语句的while后面不需要加分号
B. 循环体为一条语句时花括号可以省略
C. do-while循环的循环体可能一次都不执行
D. while后必须跟分号,循环体中的花括号不可省略
7. 有以下程序段:
int x=0;
while(x++<5);
printf("%d",x);
程序运行后输出结果是( )
A. 4
B. 6
C. 5
D. 0
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int s = 0, i = 1;
while (i <= 5)
{
s = s + i * i;
i++;
}
printf("%d", s);
}
三、程序填空题
9. 以下程序的功能是:输入一个正整数n,计算1×2×3×...×n的积。请填空。
#include <stdio.h>
main()
{
int n, i;
long fact = 1;
printf("请输入n:");
scanf("%d", &n);
i = 1;
while (【1】)
{
fact = fact * i;
i++;
}
printf("积为:%ld", fact);
}
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是输入一个正整数,输出其各位数字之和(例如输入1234,输出10)。程序中有2处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 int num, sum = 0;
L5 printf("请输入一个正整数:");
L6 scanf("%d", &num);
L7 while (num > 0);
L8 {
L9 sum = sum + num % 10;
L10 num = num \ 10;
L11 }
L12 printf("各位数字之和为:%d", sum);
L13 }
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
【编写说明】依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循“由浅入深、循序渐进”的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《编程语言基础——C语言》(第5版)《一课一练》第12练,内容是4.1 while循环、4.2 do-while循环。
《编程语言基础——C语言》(第5版)一课一练 第12练
4.1 while循环、4.2 do-while循环
一、单选题
1. 以下选项中,while语句的正确格式是( )
A. while(表达式) { 语句序列 }
B. while { 语句序列 } (表达式)
C. while[表达式] { 语句序列 }
D. while(语句序列) { 表达式 }
【答案】A
【解析】while循环的标准格式为while(表达式){语句序列},其中表达式为循环条件,语句序列为循环体。选项B、C、D的格式均不正确。
2. 在while循环中,如果首次判断条件就为假(值为0),循环体将( )
A. 一次也不执行
B. 执行一次后结束
C. 无限循环
D. 执行两次后结束
【答案】A
【解析】while循环的执行过程是:先判断条件表达式,若条件为真(非0)则执行循环体,否则跳过循环体直接结束。当首次条件就为假时,循环体一次也不执行。
3. 以下关于while循环三要素的描述中,不正确的是( )
A. 循环变量在while之前需要赋初值
B. while后的括号内是循环继续的条件
C. 循环变量的调整必须写在循环体的第一行
D. 循环变量调整的目的是使循环能够终止
【答案】C
【解析】while循环的三个要素为:循环变量赋初值、循环条件、循环变量调整值。循环变量的调整用于使循环条件最终为假从而终止循环,它不一定要写在循环体的第一行,写在循环体内的任何位置均符合要求,关键是逻辑正确。
4. 关于do-while语句,正确的描述是( )
A. 先判断条件,再执行循环体
B. 先执行循环体,再判断条件
C. 与while循环的执行过程完全相同
D. 条件为真时循环立即结束
【答案】B
【解析】do-while循环的执行过程是:先执行一次循环体中的语句,然后判断while后的条件表达式,若条件为真(非0)则继续下一轮循环,否则结束循环。因此do-while是先执行后判断的直到型循环。
5. 设初始条件为假,比较以下两段程序:
程序1: while(条件){ 循环体; }
程序2: do{ 循环体; }while(条件);
以下说法正确的是( )
A. 程序1执行1次循环体,程序2执行0次
B. 程序1执行1次循环体,程序2执行1次
C. 程序1执行0次循环体,程序2执行1次
D. 两程序都执行0次循环体
【答案】C
【解析】这是while与do-while的核心区别:while先判断后执行,初始条件为假时循环体一次都不执行;do-while先执行后判断,即使初始条件为假也至少执行一次循环体。
6. 对于do-while循环,以下说法正确的是( )
A. do-while语句的while后面不需要加分号
B. 循环体为一条语句时花括号可以省略
C. do-while循环的循环体可能一次都不执行
D. while后必须跟分号,循环体中的花括号不可省略
【答案】D
【解析】do-while循环的语法规定:while(表达式)后面必须加分号;同时do-while循环的花括号不能省略,循环体无论包含多少条语句都必须使用花括号。do-while循环至少执行一次循环体。
7. 有以下程序段:
int x=0;
while(x++<5);
printf("%d",x);
程序运行后输出结果是( )
A. 4
B. 6
C. 5
D. 0
【答案】B
【解析】x++<5为后缀自增,每次先比较再自增。追踪:x=0时0<5为真→x=1;x=1时1<5为真→x=2;... x=4时4<5为真→x=5;x=5时5<5为假→x=6,循环结束,输出6。注意分号表示空循环体。
二、程序运行结果题
8. 以下程序的运行结果是【··】。
#include <stdio.h>
main()
{
int s = 0, i = 1;
while (i <= 5)
{
s = s + i * i;
i++;
}
printf("%d", s);
}
【答案】55
【解析】程序计算1^2+2^2+3^2+4^2+5^2=1+4+9+16+25=55。循环变量i从1递增到5,每次将i*i累加到s中。
三、程序填空题
9. 以下程序的功能是:输入一个正整数n,计算1×2×3×...×n的积。请填空。
#include <stdio.h>
main()
{
int n, i;
long fact = 1;
printf("请输入n:");
scanf("%d", &n);
i = 1;
while (【1】)
{
fact = fact * i;
i++;
}
printf("积为:%ld", fact);
}
【答案】i <= n
【解析】程序使用while循环计算阶乘,循环条件应为i<=n,表示i从1累乘到n。当i>n时循环结束,此时fact中存放的即为n!的值。
四、阅读程序改错题
10. 阅读以下程序,该程序的功能是输入一个正整数,输出其各位数字之和(例如输入1234,输出10)。程序中有2处错误,请指出错误所在行号并修改正确,不许增删行,在原行上修改。
L1 #include <stdio.h>
L2 main()
L3 {
L4 int num, sum = 0;
L5 printf("请输入一个正整数:");
L6 scanf("%d", &num);
L7 while (num > 0);
L8 {
L9 sum = sum + num % 10;
L10 num = num \ 10;
L11 }
L12 printf("各位数字之和为:%d", sum);
L13 }
【答案】【1】L7: while (num > 0); → 修改为 while (num > 0)(去除多余分号,分号使花括号块不属于循环体)
【2】L10: num = num \ 10; → 修改为 num = num / 10;(C语言除法运算符是正斜杠/,反斜杠\是转义字符)
【解析】错误1:while(条件);表示空循环体,分号使后面的花括号块不再属于循环体。错误2:C语言中除法运算符是正斜杠/,反斜杠\是转义字符。这两处错误都导致程序逻辑完全错误。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$