专题五 C语言控制语句:循环(练习)-《编程语言基础—C语言》(高教版第五版)高考备考讲练测(山东省)zip

2024-06-28
| 2份
| 13页
| 199人阅读
| 4人下载

资源信息

学段 中职
学科 职教专业课
课程 C语言程序设计
教材版本 C语言程序设计高教版(第五版)全一册
年级 高一
章节 第4章 循环结构程序设计
类型 题集-专项训练
知识点 循环结构
使用场景 中职复习-二轮专题
学年 2024-2025
地区(省份) 山东省
地区(市) -
地区(区县) -
文件格式 ZIP
文件大小 108 KB
发布时间 2024-06-28
更新时间 2024-06-28
作者 xkw__007
品牌系列 上好课·一轮讲练测
审核时间 2024-06-28
下载链接 https://m.zxxk.com/soft/46020864.html
价格 3.00储值(1储值=1元)
来源 学科网

内容正文:

专题五 C语言控制语句:循环 一:单选题 1: 以下程序的输出结果是( ) main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d ",a); } A.101 B.6 C.4 D.3 【答案】D 【解析】初始时 a = 1,b = 1。第一次迭代,b % 5 == 1 成立,b 变为6,执行 continue。 第二次迭代,a = 2,b 仍为6,不满足 b % 5 == 1,b 不变。第三次迭代前,a 增加到3,b 达到11(因为之前已经增加了5),满足 b >= 10,执行 break。循环结束,a 的最终值是3。 2: 以下程序的循环次数是( ) main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A.死循环,不能确定次数 B.6 C.4 D.1 【答案】A 【解析】初始时 i = 0,进入循环。i < 1 成立,执行 continue,不执行 i++,直接进入下一次迭代。i 仍然是0,再次进入循环,继续执行 continue。这个状态会一直持续,因为 i 永远不会增加,导致一个无限循环。 3:以下程序的输出结果是( ) 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。 4:下面程序执行后输出sum的值是( ) void main(){ int i,sum; for(i=0;i<6;i++) sum+=i; printf("%d ",sum); } A.15 B.14 C.0 D.不确定 【答案】D 【解析】由于原始代码中 sum 没有被初始化,实际上程序的行为是未定义的,输出结果可能是任何值。 5:以下程序的运行结果是 ( ) 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。 6:下面程序的输出结果是 ( ) int k,j,s; for(k=2;k<6;k++,k++) { s=1; for(j=k;j<6;j++) s+=j;} printf("%d ",s); A.1 B.9 C.11 D.10 【答案】D 【解析】第一次外循环:k = 2内循环:j 从2累加到5,s 的值变为 1 + 2 + 3 + 4 + 5 = 15 第二次外循环:k = 4(注意,由于 k++ 实际上只执行一次,所以这里 k 应该是3,但由于 k++, k++ 的写法,这里 k 实际上会增加两次,变为4) 内循环:j 从4累加到5,s 的值变为 1 + 4 + 5 = 10 第三次外循环:k = 6(k 再次增加两次,变为6,但由于循环条件 k < 6,循环结束) 由于内循环每次开始时 s 都被重置为1,所以只有最后一次内循环的结果是有效的,即 s = 10。 二:分析题 1.假设value是int类型,下面循环的输出是什么? for ( value = 36; value > 0; value /= 2) printf("%3d", value); 【答案】 36 18 9 4 2 1 2:下面的程序各打印什么内容? a. #include <stdio.h> int main(void) { int i = 0; while (++i < 4) printf("Hi! "); do printf("Bye! "); while (i++ < 8); return 0; } 【答案】Hi! Hi! Hi! Hi! Bye! Bye! Bye! Bye! b. #include <stdio.h> int main(void) { int i; char ch; for (i = 0, ch = 'A'; i < 4; i++, ch += 2 * i) printf("%c", ch); return 0; } 【答案】ACEH 3.下面的程序有点问题,请找出问题所在。 #include <stdio.h> int main(void) { /* 第3行 */ int i, j, list(10); /* 第4行 */ for (i = 1, i <= 10, i++) /* 第6行 */ { /* 第7行 */ list[i] = 2*i + 3; /* 第8行 */ for (j = 1, j > = i, j++) /* 第9行 */ printf(" %d", list[j]); /* 第10行 */ printf(" "); /* 第11行 */ } /* 第12行 */ 【答案】 变量声明问题: 第4行中 int i, j, list(10); 这不是C语言中声明数组的正确方式。在C语言中,应该使用 int list[10]; 来声明一个包含10个整数的数组。 逗号运算符问题: 第6行的 for 循环条件 i = 1, i <= 10, i++ 使用了逗号运算符,但这不是正确的 for 循环语法。正确的语法应该是 for (初始化; 条件; 更新)。 内层 for 循环条件错误: 第9行的内层 for 循环条件 j >= i 应该使用 j < i 或者 j <= i,取决于循环的目的。如果目的是打印从 list[i] 到 list[1] 的所有元素,应该使用 j <= i。此外,内层 for 循环缺少初始化语句。 内层 for 循环语法错误: 第9行的内层 for 循环同样使用了逗号,并且缺少了初始化部分。正确的语法是 for (初始化; 条件; 更新)。 数组索引从1开始: 通常,数组索引从0开始,但这段代码中的数组 list 从 list[1] 开始赋值和打印,这在C语言中是合法的,但不是常规做法。 三:编程题 1:使用嵌套循环,按下面的格式打印字符: $ $$ $$$ $$$$ $$$$$ 【答案】 #include <stdio.h> int main(void) { int i, j; int lines = 5; // 行数 // 外层循环控制行数 for (i = 1; i <= lines; i++) { // 内层循环控制每行打印的字符数 for (j = 1; j <= i; j++) { printf("$"); } printf(" "); // 每行结束后换行 } return 0; } 2:鸡兔同笼有30个头,90只脚,求鸡兔各有多少? 【答案】#include <stdio.h> int main() { int totalHeads = 30; // 总头数 int totalFeet = 90; // 总脚数 // 设鸡的数量为x,兔子的数量为y // 根据题目条件,我们可以列出两个方程: // x + y = totalHeads // 2x + 4y = totalFeet // 我们可以从第一个方程解出 x = totalHeads - y // 然后将这个表达式代入第二个方程解出 y int rabbits = (totalFeet - 2 * totalHeads) / 2; // 解出兔子的数量 int chickens = totalHeads - rabbits; // 根据兔子的数量解出鸡的数量 printf("鸡的数量是: %d ", chickens); printf("兔子的数量是: %d ", rabbits); return 0; } 3.编程求出3-100之间的所有素数 【答案】 #include <stdio.h> #include <math.h> int main() { int i, j; int isPrime; for (i = 3; i <= 100; i += 2) { // 从3开始,以2为步长,这样可以只检查奇数 isPrime = 1; // 假设i是素数 for (j = 3; j <= sqrt(i); j += 2) { // 只需检查到sqrt(i),并且是奇数 if (i % j == 0) { // 如果j能整除i,则i不是素数 isPrime = 0; break; } } if (isPrime) { // 如果i是素数 printf("%d ", i); } } printf(" "); return 0; } 学科网(北京)股份有限公司 $$ 专题五 C语言控制语句:循环 一:单选题 1: 以下程序的输出结果是( ) main( ) { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=10) break; if (b%5==1) { b+=5; continue; } } printf("%d ",a); } A.101 B.6 C.4 D.3 2: 以下程序的循环次数是( ) main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } } A.死循环,不能确定次数 B.6 C.4 D.1 3:以下程序的输出结果是( ) int x=23; do{ printf("%2d",x - -); }while(!x); A.打印出321 B.打印出23 C.不打印任何内容 D.陷入死循环 4:下面程序执行后输出sum的值是( ) void main(){ int i,sum; for(i=0;i<6;i++) sum+=i; printf("%d ",sum); } A.15 B.14 C.0 D.不确定 5:以下程序的运行结果是 ( ) 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 6:下面程序的输出结果是 ( ) int k,j,s; for(k=2;k<6;k++,k++) { s=1; for(j=k;j<6;j++) s+=j;} printf("%d ",s); A.1 B.9 C.11 D.10 二:分析题 1.假设value是int类型,下面循环的输出是什么? for ( value = 36; value > 0; value /= 2) printf("%3d", value); 2:下面的程序各打印什么内容? a. #include <stdio.h> int main(void) { int i = 0; while (++i < 4) printf("Hi! "); do printf("Bye! "); while (i++ < 8); return 0; } b. #include <stdio.h> int main(void) { int i; char ch; for (i = 0, ch = 'A'; i < 4; i++, ch += 2 * i) printf("%c", ch); return 0; } 3.下面的程序有点问题,请找出问题所在。 #include <stdio.h> int main(void) { /* 第3行 */ int i, j, list(10); /* 第4行 */ for (i = 1, i <= 10, i++) /* 第6行 */ { /* 第7行 */ list[i] = 2*i + 3; /* 第8行 */ for (j = 1, j > = i, j++) /* 第9行 */ printf(" %d", list[j]); /* 第10行 */ printf(" "); /* 第11行 */ } /* 第12行 */ 三:编程题 1:使用嵌套循环,按下面的格式打印字符: $ $$ $$$ $$$$ $$$$$ 2:鸡兔同笼有30个头,90只脚,求鸡兔各有多少? 3.编程求出3-100之间的所有素数 学科网(北京)股份有限公司 $$

资源预览图

专题五 C语言控制语句:循环(练习)-《编程语言基础—C语言》(高教版第五版)高考备考讲练测(山东省)zip
1
专题五 C语言控制语句:循环(练习)-《编程语言基础—C语言》(高教版第五版)高考备考讲练测(山东省)zip
2
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。