内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第14卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(七)do……while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第14卷
do……while循环 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.有以下程序
main()
{
int a =3;
do{
printf("%d,", a-=2);
}
while(!(--a));
printf("
");
}
程序运行后的输出结果是( )
A.1, B.1,-2, C.3,0, D.1,0
2.若 int型变量i和p已定义,执行以下语句后p的值不等于6!的是( )
A.for(i=1,p= 1;i<= 6;i++) p*=i;
B.for(i=1;i<6;i++) {p*=i;}
C.i=1;p= 1; while( i<=6) {p*=i; i++;}
D.i= 1;p= 1; do {p*=i; i++;} while(i <= 6);
3.以下至少会执行一次循环体的循环结构是( )
A.while B.for C.If…else D.do…while
4.以下关于 do - while 循环和 while 循环的说法,正确的是( )
A.do - while 循环和 while 循环的执行流程完全相同
B.do - while 循环至少执行一次循环体,而 while 循环可能一次都不执行
C.while 循环的条件判断在循环体执行之后,do - while 循环的条件判断在循环体执行之前
D.do - while 循环不能嵌套使用,而 while 循环可以嵌套使用
5.以下代码的输出结果是( )
int i = 0;
do {
printf("%d ", i);
i++;
} while (i < 3);
A.0 1 2 B.0 1 2 3 C.1 2 3 D.编译错误
6.以下 do-while 循环中,循环体执行的次数是( )
int i = 10;
do {
i -= 3;
} while (i > 0);
A.2 次 B.3 次 C.4 次 D.5 次
7.以下 do-while 循环的执行次数是( )
int i = 3;
do {
i--;
} while (i > 0);
A.0 次 B.1 次 C.2 次 D.3 次
8.以下会无限循环下去的语句是( )
A.for (int i = 0; i < 10; i--) B.while (0)
C.for (int i = 10; i > 0; i--) D.do { } while (0);
9.以下哪个循环嵌套结构可以实现一个二维数组的全遍历?( )
A.for循环 B.while循环 C.do-while循环 D.以上都可以
10.以下代码的输出结果是( )
int i = 0;
do {
if (i % 2 == 0) {
i++;
continue;
}
printf("%d ", i);
i++;
} while (i < 5);
A.1 3 B.0 2 4 C.1 3 5 D.无输出
11.以下代码的输出结果是( )
int i = 0;
do {
if (i == 3) {
continue;
}
printf("%d ", i);
i++;
} while (i < 5);
A.0 1 2 B.0 1 2 4 C.0 1 2 3 4 D.程序陷入死循环
12.以下代码中 do…while 循环的执行次数是( )
int i = 5;
do {
i++;
} while (i < 5);
A.0 次 B.1 次 C.5 次 D.无限次
13.以下代码的输出是( )
int a = 10, b = 0;
do {
a -= 2;
b++;
} while (a > b);
printf("%d,%d", a, b);
A.6,3 B.4,4 C.2,4 D.8,2
14.以下代码段的输出结果是( )
int x=3;
do { printf("%d ", x-=2); } while (!(--x));
A.1 B.1 -2 C.3 0 D.死循环
15.以下代码的输出结果是( )
int i = 5;
do {
printf("%d", i);
i--;
} while(i > 3);
A.5 B.54 C.543 D.5432
16.执行下列程序段后,结果为( )
int k=0;
do{ k++;
}while(k++<=3); printf(“%d”,k);
A.3 B.4 C.5 D.6
17.下列循环中,没有语法错误的是( )
A.int i=1;
While(i<=10)
i++;
printf(“%d
”,i);
B.int i=1;
while(i<=10)
i++;
printf(“%d
”,i);
C.int i=1;
do {i++;
} while(i<=10)
printf(“%d
”,i);
D.int i;
for(i=1;i<=10)
{sum+=i;i++;}
printf(“%d
”,i);
18.下列关于循环语句的描述中,正确的是( )
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,以while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D.do-while循环中,根据情况可以省略while
19.若有以下语句,则执行后输出( )
main()
{int x=3;
do
{printf("%d",x-=2);}
while(!(-x));getch();}
A.1 B.1-2 C.30 D.语句是死循环
20.以下不是无限循环的语句是( )
A.for(i=3;;i++) B.do{int i;i+=8;}while(y=1)
C.while(8){sum=sum-9;} D.for(i=9;i>3;i-)
二、程序设计题(本大题共4小题,每题10分,共40分)
21.代码实现用户输入验证
要求:
输入一个年龄(1~150之间的整数),若输入非法(如负数或超范围),提示重新输入,直到合法为止。
使用 do-while 循环实现。
最终输出合法年龄。
22.代码实现题统计输入数字的位数
要求:
输入一个正整数 n。
使用 do-while 循环统计其位数(如输入 1234,输出 4)。
23.编写一个程序,使用 do - while 循环找出用户输入的一组整数中的最大值。
24.编写一个程序,使用 do - while 循环计算用户输入的一组整数的和,直到用户输入 0 为止。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第14卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(七)do……while循环
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第14卷
do……while循环 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.有以下程序
main()
{
int a =3;
do{
printf("%d,", a-=2);
}
while(!(--a));
printf("
");
}
程序运行后的输出结果是( )
A.1, B.1,-2, C.3,0, D.1,0
【答案】B
【详解】变量a初始化为3。do...while循环开始,首先执行printf("%d,", a-=2);,这行代码做了两件事:首先a减去2,然后打印a的值(此时a的值变为1),并且执行a的递减操作(--a),这使得a的值变为0。while(!(--a)); 这部分是循环的条件。!(--a)首先对a进行递减操作,然后对结果取反。由于a已经变为0,--a变为-1,取反后变为真(非零值为真),循环继续。循环继续执行,a再次变为-2,打印-2,然后a递减到-3,此时while条件中的!(--a)变为假(因为--a变为-4,取反为0,即假),循环结束。最后,执行printf("
");,输出换行符。
2.若 int型变量i和p已定义,执行以下语句后p的值不等于6!的是( )
A.for(i=1,p= 1;i<= 6;i++) p*=i;
B.for(i=1;i<6;i++) {p*=i;}
C.i=1;p= 1; while( i<=6) {p*=i; i++;}
D.i= 1;p= 1; do {p*=i; i++;} while(i <= 6);
【答案】B
3.以下至少会执行一次循环体的循环结构是( )
A.while B.for C.If…else D.do…while
【答案】D
4.以下关于 do - while 循环和 while 循环的说法,正确的是( )
A.do - while 循环和 while 循环的执行流程完全相同
B.do - while 循环至少执行一次循环体,而 while 循环可能一次都不执行
C.while 循环的条件判断在循环体执行之后,do - while 循环的条件判断在循环体执行之前
D.do - while 循环不能嵌套使用,而 while 循环可以嵌套使用
【答案】B
5.以下代码的输出结果是( )
int i = 0;
do {
printf("%d ", i);
i++;
} while (i < 3);
A.0 1 2 B.0 1 2 3 C.1 2 3 D.编译错误
【答案】A
6.以下 do-while 循环中,循环体执行的次数是( )
int i = 10;
do {
i -= 3;
} while (i > 0);
A.2 次 B.3 次 C.4 次 D.5 次
【答案】C
【分析】本题考查了 do-while 循环的执行次数。do-while 循环的特点是先执行循环体,再判断条件。需要明确循环的初始条件和终止条件,从而计算出循环体的执行次数。
【详解】(1)i的初始值为10;
(2)循环过程:第1次循环:i-=3;实际上为:i=i-3,i的值为7,while(i>0)成立;第2次循环:i-=3; i的值为4,while(i>0)成立;第3次循环:i-=3; i的值为1,while(i>0)成立;第4次循环:i-=3; i的值为-2,while(i>0)不成立;循环至此结束,共4次循环。
7.以下 do-while 循环的执行次数是( )
int i = 3;
do {
i--;
} while (i > 0);
A.0 次 B.1 次 C.2 次 D.3 次
【答案】D
【分析】do-while循环语句的特点是先执行循环体,再判断条件是否成立,该程序中,循环体内为i自减,当i=3、i=2、i=1时循环体共执行了三次,
【详解】do - while 先执行循环体再判断条件。初始 i = 3 ,第一次循环 i-- 后 i 为 2 ,条件 i > 0 成立;第二次循环 i-- 后 i 为 1 ,条件仍成立;第三次循环 i-- 后 i 为 0 ,条件不成立,循环结束。所以循环体共执行 3 次。
【点睛】
8.以下会无限循环下去的语句是( )
A.for (int i = 0; i < 10; i--) B.while (0)
C.for (int i = 10; i > 0; i--) D.do { } while (0);
【答案】A
9.以下哪个循环嵌套结构可以实现一个二维数组的全遍历?( )
A.for循环 B.while循环 C.do-while循环 D.以上都可以
【答案】D
【详解】所有的循环结构都可以用来嵌套,以实现对二维数组的全遍历。
10.以下代码的输出结果是( )
int i = 0;
do {
if (i % 2 == 0) {
i++;
continue;
}
printf("%d ", i);
i++;
} while (i < 5);
A.1 3 B.0 2 4 C.1 3 5 D.无输出
【答案】A
11.以下代码的输出结果是( )
int i = 0;
do {
if (i == 3) {
continue;
}
printf("%d ", i);
i++;
} while (i < 5);
A.0 1 2 B.0 1 2 4 C.0 1 2 3 4 D.程序陷入死循环
【答案】D
12.以下代码中 do…while 循环的执行次数是( )
int i = 5;
do {
i++;
} while (i < 5);
A.0 次 B.1 次 C.5 次 D.无限次
【答案】B
13.以下代码的输出是( )
int a = 10, b = 0;
do {
a -= 2;
b++;
} while (a > b);
printf("%d,%d", a, b);
A.6,3 B.4,4 C.2,4 D.8,2
【答案】C
【详解】这段代码使用了do-while循环,执行步骤如下:
初始值:a=10,b=0。
循环过程(每次循环先执行后判断条件):
第1次:a=10-2=8,b=0+1=1→判断8>1(成立,继续)。
第2次:a=8-2=6,b=1+1=2→判断6>2(成立,继续)。
第3次:a=6-2=4,b=2+1=3→判断4>3(成立,继续)。
第4次:a=4-2=2,b=3+1=4→判断2>4(不成立,退出循环)。
最终输出:printf打印a和b的值,即2,4
14.以下代码段的输出结果是( )
int x=3;
do { printf("%d ", x-=2); } while (!(--x));
A.1 B.1 -2 C.3 0 D.死循环
【答案】B
【详解】第一次循环迭代:x-=2后,x=3-2=1,此时打印输出1。
循环后检查条件while(!(--x)),x先减去1,即x=1-1=0,表达式值为0。因此!(--x)=!0。在C语言中,0表示假,!0为真,因此条件成立,循环继续,此时输出1,x值为0.
第二次循环迭代:x-=2后,x=0-2=-2,此时打印输出-2。
循环后检查条件while(!(--x)),x先减去1,即x=-2-1=-3,表达式值为-3。因此!(--x)=!(-3)。在C语言中,非零值表示真,!(-3)为假,因此条件不成立,循环终止。
因此输出为1 -2,选B
15.以下代码的输出结果是( )
int i = 5;
do {
printf("%d", i);
i--;
} while(i > 3);
A.5 B.54 C.543 D.5432
【答案】B
16.执行下列程序段后,结果为( )
int k=0;
do{ k++;
}while(k++<=3); printf(“%d”,k);
A.3 B.4 C.5 D.6
【答案】D
【详解】最后一轮循环,当K=5,判断条件不成立时,后置加还会加1.故选D。
17.下列循环中,没有语法错误的是( )
A.int i=1;
While(i<=10)
i++;
printf(“%d
”,i);
B.int i=1;
while(i<=10)
i++;
printf(“%d
”,i);
C.int i=1;
do {i++;
} while(i<=10)
printf(“%d
”,i);
D.int i;
for(i=1;i<=10)
{sum+=i;i++;}
printf(“%d
”,i);
【答案】B
【详解】A选项中,while关键字大写;B选项中,do-while的while后面没有分号;D选项中,for括号中有三个表达式,可以空着,但必须写分号。故选B。
18.下列关于循环语句的描述中,正确的是( )
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,以while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D.do-while循环中,根据情况可以省略while
【答案】C
19.若有以下语句,则执行后输出( )
main()
{int x=3;
do
{printf("%d",x-=2);}
while(!(-x));getch();}
A.1 B.1-2 C.30 D.语句是死循环
【答案】A
20.以下不是无限循环的语句是( )
A.for(i=3;;i++) B.do{int i;i+=8;}while(y=1)
C.while(8){sum=sum-9;} D.for(i=9;i>3;i-)
【答案】D
二、程序设计题(本大题共4小题,每题10分,共40分)
21.代码实现用户输入验证
要求:
输入一个年龄(1~150之间的整数),若输入非法(如负数或超范围),提示重新输入,直到合法为止。
使用 do-while 循环实现。
最终输出合法年龄。
【答案】#include <stdio.h>
int main() {
int age;
do {
printf("请输入年龄(1~150):");
scanf("%d", &age);
if (age < 1 || age > 150) {
printf("输入错误,请重新输入!
");
}
} while (age < 1 || age > 150);
printf("合法年龄:%d", age);
return 0;
}
22.代码实现题统计输入数字的位数
要求:
输入一个正整数 n。
使用 do-while 循环统计其位数(如输入 1234,输出 4)。
【答案】#include <stdio.h>
int main() {
int n, count = 0;
scanf("%d", &n);
do {
n /= 10;
count++;
} while (n != 0);
printf("位数:%d", count);
return 0;
}
23.编写一个程序,使用 do - while 循环找出用户输入的一组整数中的最大值。
【答案】#include <stdio.h>
int main() {
int num, max;
int first = 1;
do {
printf("请输入一个整数(输入 0 结束): ");
scanf("%d", &num);
if (first) {
max = num;
first = 0;
} else if (num != 0 && num > max) {
max = num;
}
} while (num != 0);
if (!first) {
printf("输入的整数中的最大值为: %d
", max);
} else {
printf("没有输入有效整数。
");
}
return 0;
}
24.编写一个程序,使用 do - while 循环计算用户输入的一组整数的和,直到用户输入 0 为止。
【答案】#include <stdio.h>
int main() {
int num, sum = 0;
do {
printf("请输入一个整数(输入 0 结束): ");
scanf("%d", &num);
sum += num;
} while (num != 0);
printf("输入的整数的和为: %d
", sum);
return 0;
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$