第13卷 do……while循环 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》

2025-10-29
| 2份
| 22页
| 127人阅读
| 1人下载

内容正文:

编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第13卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (七)do……while循环 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第13卷 do……while循环 老师讲解卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.以下程序的运行结果是 (   ) main( ) { unsigned int num,k; num=26;k=1; do { k*=num%10; num/=10; } while(num); printf("%d ", k); } A.2 B.12 C.60 D.18 2.以下程序的输出结果是(   ) int x=23; do{ printf("%2d",x - -);   }while(!x); A.打印出321 B.打印出23 C.不打印任何内容 D.陷入死循环 3.在 do - while 循环中使用 continue 语句时,需要注意(   ) A.不能使用 continue 语句 B.必须手动更新循环变量,否则可能导致无限循环 C.continue 语句会终止整个 do - while 循环 D.continue 语句只能在 do - while 循环的开头使用 4.以下 do - while 循环代码,若输入 -5,输出结果是(   ) int num; scanf("%d", &num); do {     num++;     printf("%d ", num); } while (num < 0); A.-4 -3 -2 -1 0 B.-5 -4 -3 -2 -1 C.-4 D.无输出 5.当执行以下程序段时(   ) x=-1; do ( x=x*x; }while( !x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统将提示有语法错误 6.下面哪个循环语句可以在循环开始前先执行一次循环体?(   ) A.while循环 B.for循环 C.do-while循环 D.continue语句 7.已知x = -5,执行下面程序段后y的值为(   ) y = 3; if(x >= 0)     y = x > 0 ? 1 : 0; else     y = -2; int x=-3; do {     x=x*x; } while (!x); A.-1 B.1 C.-2 D.0 8.以下程序的输出结果是(   ) #include <stdio.h> int main() {     int a=4, b=11;     do {         b-=a;         ++a;     }while(- -b<0);     printf("a=%d,b=%d ", a, b); } A.a=5,b=11 B.a=2,b=11 C.a=5,b=7 D.a=2,b=9 9.若有定义语句int k=-3,j=4;,则以下循环体的执行次数是(   ) do {     j += ++k; } while (!k == 0); A.0次 B.1次 C.2次 D.3次 10.以下代码段的输出结果是(   ) int i = 1; do {     printf("%d ", i);     i *= 2; } while (i < 10); A.1 2 4 8 B.1 2 4 8 16 C.1 D.无输出 11.以下代码的输出结果是(   ) 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.无输出 12.以下关于 while、do…while、for 循环语句的说法,正确的是(   ) A.while 循环至少会执行一次循环体 B.do…while 循环的条件判断在循环体执行之后 C.for 循环不能用于不确定次数的循环 D.do…while 循环和 while 循环功能完全相同 13.以下代码的功能是(   ) int num, sum = 0; do {     scanf("%d", &num);     sum += num; } while (num != 0); printf("%d", sum); A.累加所有输入的数 B.累加正数直到输入0 C.累加非零数 D.累加输入的第一个数 14.以下代码的输出结果是(   ) int i = 0; while (i < 2) {     int j = 0;     do {         printf("%d %d ", i, j);         j++;     } while (j < 2);     i++; } A.0 0 0 1 1 0 1 1 B.0 0 1 0 0 1 1 1 C.0 0 0 1 D.0 0 1 1 15.以下代码段的循环次数是(   ) int i=10; do { i--; } while(i>5); A.无限循环 B.7次 C.6次 D.5次 16.以下代码的输出是(   ) int i=0, sum=1; do { sum += i++; } while(i<5); printf("%d", sum); A.11 B.10 C.15 D.6 17.以下代码的输出是(   ) int i=3; do {     printf("%d", i--); } while(i>0); A.321 B.3210 C.32 D.3 18.以下代码的输出结果是(   ) int i = 1;   do {       printf("%d", i);       i *= 2;   } while(i < 5); A.1 B.12 C.124 D.1248 19.C 语言中 while 和 do-while 循环的主要区别是(   ) A.do-while 的循环体至少无条件执行一次 B.while 的循环控制条件比 do-while 的循环控制条件严格 C.do-while 允许从外部转到循环体内 D.do-while 的循环体不能是复合语句 20.在C语言中,while 循环和 do-while 循环的主要区别在于(   ) A.while 循环的循环体可能一次都不执行 B.do-while 循环的循环体至少执行一次 C.while 循环的条件判断在循环体执行之前 D.do-while 循环的条件判断在循环体执行之后 二、程序设计题(本大题共4小题,每题10分,共40分) 21.输入若干个字符,以‘*’作为结束符。 22.输入一个整数,判断其是否为回文数。(首尾对应相同的整数,比如12321,1221,121,13431,即左边第一位等于右边第一位,左边第二位等于右边第二位,……) 23.编写一个程序,使用 do - while 循环判断一个整数是否是回文数(正读和反读都一样的数)。 24.编写一个程序,使用 do - while 循环计算用户输入的一系列正数的乘积,当输入负数时停止输入。 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $ 编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。 本专辑第13卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】: (七)do……while循环 湖南省普通高等学校对口招生考试 计算机应用类 《C语言程序设计》考点双析卷 第13卷 do……while循环 老师讲解卷 时间:45分钟 总分:100分 班级_______ 姓名_______ 学号_______ 成绩_______ 一、单项选择题(本大题共20小题,每题3分,共60分) 1.以下程序的运行结果是 (   ) main( ) { unsigned int num,k; num=26;k=1; do { k*=num%10; num/=10; } while(num); printf("%d ", k); } A.2 B.12 C.60 D.18 【答案】B 【详解】初始时 num = 26,k = 1。第一次循环:k = 1 * (26 % 10) = 1 * 6 = 6,num = 26 / 10 = 2。第二次循环:k = 6 * (2 % 10) = 6 * 2 = 12,num = 2 / 10 = 0(因为整数除法会向下取整)。循环条件 while(num) 不满足,num 为0,循环结束。循环结束后,k 的值是12。 2.以下程序的输出结果是(   ) int x=23; do{ printf("%2d",x - -);   }while(!x); A.打印出321 B.打印出23 C.不打印任何内容 D.陷入死循环 【答案】B 【详解】初始时,变量 x 被赋值为23。进入 do-while 循环,这个循环至少执行一次。 printf("%2d", x--); 这行代码首先打印 x 的值为23。判断循环条件为假,打印值为23。 3.在 do - while 循环中使用 continue 语句时,需要注意(   ) A.不能使用 continue 语句 B.必须手动更新循环变量,否则可能导致无限循环 C.continue 语句会终止整个 do - while 循环 D.continue 语句只能在 do - while 循环的开头使用 【答案】B 【详解】在do-while循环中使用continue语句时,程序会跳过本次循环剩余的代码,直接进入下一次循环的条件判断。但需注意:‌循环变量的更新通常写在循环体内‌,如果continue跳过了更新语句,可能导致循环变量不变,从而引发无限循环。因此,使用continue时必须确保循环变量能被正确更新。即必须手动更新循环变量,否则可能导致无限循环。 4.以下 do - while 循环代码,若输入 -5,输出结果是(   ) int num; scanf("%d", &num); do {     num++;     printf("%d ", num); } while (num < 0); A.-4 -3 -2 -1 0 B.-5 -4 -3 -2 -1 C.-4 D.无输出 【答案】A 5.当执行以下程序段时(   ) x=-1; do ( x=x*x; }while( !x); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统将提示有语法错误 【答案】A 【详解】do……while循环会在判断前先执行以此循环体,之后进行判断 x=x*x ,则x的值是1为真,!x为假,循环结束。 6.下面哪个循环语句可以在循环开始前先执行一次循环体?(   ) A.while循环 B.for循环 C.do-while循环 D.continue语句 【答案】C 【详解】do-while循环会先执行一次循环体,然后再判断条件是否满足。 7.已知x = -5,执行下面程序段后y的值为(   ) y = 3; if(x >= 0)     y = x > 0 ? 1 : 0; else     y = -2; int x=-3; do {     x=x*x; } while (!x); A.-1 B.1 C.-2 D.0 【答案】C 【详解】y = 3; 初始化y为3。if(x >= 0) 检查x是否大于或等于0,因为x = -5,所以不满足条件,跳过if块。 执行else块,y = -2; 将y设置为-2。int x=-3; 这行代码在逻辑上是多余的,因为它声明了一个新的局部变量x,但这个新的x没有在后续代码中使用。do { x=x*x; } while (!x); 进入do-while循环,由于x已经是-5,所以循环体执行一次,x变为25,但这个改变不影响y的值。循环条件!x(x不等于0)为真,因为x现在是25,所以循环体只执行一次。 由于y的值在else块中被设置为-2,并且在之后的代码中没有对y的值进行修改,所以最终y的值是-2。 8.以下程序的输出结果是(   ) #include <stdio.h> int main() {     int a=4, b=11;     do {         b-=a;         ++a;     }while(- -b<0);     printf("a=%d,b=%d ", a, b); } A.a=5,b=11 B.a=2,b=11 C.a=5,b=7 D.a=2,b=9 【答案】C 【详解】do-while循环只会执行一次,因为循环条件while(--b < 0)中的--b是一个后缀递减运算符,它会先读取b的值,然后b减1。由于b的初始值为11,即使减去a(初始值为4)后变为7,b的值仍然是正数,所以条件--b < 0为假,循环不会继续执行。在循环中:b -= a; 执行后,b的值变为 11 - 4 = 7。++a; 执行后,a的值变为 4 + 1 = 5。循环结束后,printf将打印出a和b的值,即a=5,b=7。 9.若有定义语句int k=-3,j=4;,则以下循环体的执行次数是(   ) do {     j += ++k; } while (!k == 0); A.0次 B.1次 C.2次 D.3次 【答案】D 【详解】k的初始值为-3,j的初始值为4。do...while循环至少执行一次。在循环体中,++k是前缀递增,所以k先加1再与j相加。while (!k == 0);条件中的!k首先检查k是否为0,由于k是非零的,!k为真(1),然后与0进行比较,1 == 0为假,所以循环继续。循环会一直执行,直到k变为0。由于k每次循环增加1,从-3开始,循环会在k变为0之前执行3次。 10.以下代码段的输出结果是(   ) int i = 1; do {     printf("%d ", i);     i *= 2; } while (i < 10); A.1 2 4 8 B.1 2 4 8 16 C.1 D.无输出 【答案】A 11.以下代码的输出结果是(   ) 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 12.以下关于 while、do…while、for 循环语句的说法,正确的是(   ) A.while 循环至少会执行一次循环体 B.do…while 循环的条件判断在循环体执行之后 C.for 循环不能用于不确定次数的循环 D.do…while 循环和 while 循环功能完全相同 【答案】B 13.以下代码的功能是(   ) int num, sum = 0; do {     scanf("%d", &num);     sum += num; } while (num != 0); printf("%d", sum); A.累加所有输入的数 B.累加正数直到输入0 C.累加非零数 D.累加输入的第一个数 【答案】C 14.以下代码的输出结果是(   ) int i = 0; while (i < 2) {     int j = 0;     do {         printf("%d %d ", i, j);         j++;     } while (j < 2);     i++; } A.0 0 0 1 1 0 1 1 B.0 0 1 0 0 1 1 1 C.0 0 0 1 D.0 0 1 1 【答案】A 15.以下代码段的循环次数是(   ) int i=10; do { i--; } while(i>5); A.无限循环 B.7次 C.6次 D.5次 【答案】D 16.以下代码的输出是(   ) int i=0, sum=1; do { sum += i++; } while(i<5); printf("%d", sum); A.11 B.10 C.15 D.6 【答案】A 17.以下代码的输出是(   ) int i=3; do {     printf("%d", i--); } while(i>0); A.321 B.3210 C.32 D.3 【答案】A 18.以下代码的输出结果是(   ) int i = 1;   do {       printf("%d", i);       i *= 2;   } while(i < 5); A.1 B.12 C.124 D.1248 【答案】B 19.C 语言中 while 和 do-while 循环的主要区别是(   ) A.do-while 的循环体至少无条件执行一次 B.while 的循环控制条件比 do-while 的循环控制条件严格 C.do-while 允许从外部转到循环体内 D.do-while 的循环体不能是复合语句 【答案】A 【详解】do-while 循环的循环体至少无条件执行一次,然后才检查循环条件。while 和 do-while 的循环控制条件严格程度相同,都是基于布尔表达式的结果来决定是否继续执行循环。在C语言中,无论是 while 还是 do-while 循环,通常不允许从外部代码块直接跳转到循环体内。do-while 的循环体可以是复合语句(由 {} 包围的代码块),与 while 循环一样。 20.在C语言中,while 循环和 do-while 循环的主要区别在于(   ) A.while 循环的循环体可能一次都不执行 B.do-while 循环的循环体至少执行一次 C.while 循环的条件判断在循环体执行之前 D.do-while 循环的条件判断在循环体执行之后 【答案】B 【详解】while 循环首先检查条件,如果条件为假,则循环体一次也不执行。而 do-while 循环至少执行一次循环体,之后才检查条件。 二、程序设计题(本大题共4小题,每题10分,共40分) 21.输入若干个字符,以‘*’作为结束符。 【答案】#include<stdio.h> main() {     char ch;     printf("输入若干个字符:");     ch=getchar();     do     {         putchar(ch);         ch=getchar();     }     while(ch!='*');     getchar(); } 【详解】getchar()可输入多个字符,但每次接收一个字符,依次判断直到接收到“*”。 22.输入一个整数,判断其是否为回文数。(首尾对应相同的整数,比如12321,1221,121,13431,即左边第一位等于右边第一位,左边第二位等于右边第二位,……) 【答案】#include<stdio.h> int main(void) {     int x,num,t,n;     scanf("%d",&x);     num=0;     n=x;     do     {         num=num*10+x%10;         x/=10;     }while(x>0);     if(n==num)         printf("Yes ");     else         printf("No ");     return 0; } 【详解】将整数x逆转,逆转的方法就是利用求余%和除/的思想。 23.编写一个程序,使用 do - while 循环判断一个整数是否是回文数(正读和反读都一样的数)。 【答案】#include <stdio.h> int main() {     int num, originalNum, reversedNum = 0;     printf("请输入一个整数: ");     scanf("%d", &num);     originalNum = num;     do {         reversedNum = reversedNum * 10 + num % 10;         num /= 10;     } while (num != 0);     if (originalNum == reversedNum) {         printf("%d 是回文数。 ", originalNum);     } else {         printf("%d 不是回文数。 ", originalNum);     }     return 0; } 24.编写一个程序,使用 do - while 循环计算用户输入的一系列正数的乘积,当输入负数时停止输入。 【答案】#include <stdio.h> int main() {     int num;     long long product = 1;     do {     printf("请输入一个正数(输入负数停止): ");      scanf("%d", &num);      if (num > 0) {        product *= num;  }     } while (num >= 0);     printf("输入的正数的乘积是: %lld ", product);     return 0;  } 【分析】本题考查的是用do-while循环计算正数乘积计算程序 【详解】用do-while循环保证至少输入一次,且保证当输入的数为正数时,保持计算,当输入的数为负数时(即满足条件num>=0时)控制终止,退出循环。 product*=num来计算正数乘积 【点睛】product:long long类型,用于累积乘积,避免大数溢出 试卷第6页,共6页 试卷第5页,共6页 学科网(北京)股份有限公司 $

资源预览图

第13卷 do……while循环 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
1
第13卷 do……while循环 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
2
第13卷 do……while循环 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计知识考点双析卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。