专题四 分支和跳转(练习)-《编程语言基础—C语言》(高教版第五版)高考备考讲练测(山东省)

2024-06-13
| 2份
| 12页
| 349人阅读
| 4人下载

资源信息

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

内容正文:

专题四 分支和跳转 一:单选题 1: 有以下程序 main() { int i; for(i=4; i>0;i--) switch(i) {case 1: printf("%d", i);break; case 2: printf("%d", i); default : printf("%d", i);} } 执行后输出结果是( ) A.43221 B.43211 C.221 D.322 2:假定所有变量均已正确定义,下列程序段运行后 x 的值是( ) k=1; j=2; x=8; if(!k)x++; else if(j)x=9; else x=3; A.5 B.12 C.9 D.7 3:以下程序的运行结果是 ( ) #include <stdio.h> main( ) { int x = 2, y = 2, z = 5, j = 5; switch (x) { case 1:switch (x) { case 2: j++; case 1:x++;break; } case 2:z++;x++;break; } printf("%d,%d", j, z); } A.5,5 B.6,6 C.5,6 D.6,5 4:若执行以下程序时从键盘上输入 4,则输出结果是 ( ) main() {int n; scanf("%d",&n); if(n++<4) printf("%d ",n); else printf("%d ",++n); } A.5 B.6 C.4 D.7 5:以下程序的运行结果是 ( ) #include <stdio.h> main() { int k = 1, j = 2; { switch (k) { case 1 : j += k; case 2 : case 3 : j += k; default : break; } k--; } printf("%d ", j); } A.5 B.7 C.6 D.4 6:若变量 x 为 char 类型,则不能判断 x 中的值为大写字母的表达式的选项是 ( ) A.x>=’A’&&x<=’Z’ B.x>=(‘D’-3)&&x<=(‘X’+2) C.’A’<=x<=’Z’ D.x>=65&&x<=90 二:分析题 判断下列表达式是true还是false? 1:88 > 2 && 'b'>'c' 2:36 > 15 || 'b'<'e' 3:!(75>39) 根据下列描述的条件,分别构造一个表达式 4:number等于或大于70,但是小于90 5:h不是字符q或k 6:number不在10~19之间(不包括10和19) 7:下面的程序将打印什么? int main(void) { int num; for (num = 1; num <= 5; num++) { if (num % 3 == 0) putchar('$'); else putchar('*'); putchar('#'); putchar('%'); } putchar(' '); return 0; } 8:下面的程序将打印什么? #include <stdio.h> int main(void) { int i = 0; while (i < 3) { switch (i++) { case 0: printf("胖"); case 1: printf("帽子"); case 2: printf("猫"); default: printf("啊哈!"); } putchar(' '); } return 0; } 三:编程题 1:输入三个数,从小到大进行排序。 2:编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量 学科网(北京)股份有限公司 $$ 专题四 分支和跳转 一:单选题 1: 有以下程序 main() { int i; for(i=4; i>0;i--) switch(i) {case 1: printf("%d", i);break; case 2: printf("%d", i); default : printf("%d", i);} } 执行后输出结果是( ) A.43221 B.43211 C.221 D.322 【答案】A 【解析】当i=4时:没有匹配的case,执行default分支,打印4。当i=3时:同样没有匹配的case,执行default分支,打印3。当i=2时:匹配case 2,打印2,然后由于没有break语句,继续执行下面的default分支,打印2。当i=1时:匹配case 1,打印1,然后由于有break语句,退出switch语句。所以,程序的输出将是4 3 2 2 1。 2:假定所有变量均已正确定义,下列程序段运行后 x 的值是( ) k=1; j=2; x=8; if(!k)x++; else if(j)x=9; else x=3; A.5 B.12 C.9 D.7 【答案】C 【解析】k的值为1,j的值为2,x的值为8。if(!k):这里的!k是一个逻辑非操作,由于k的值为1(真值),逻辑非操作将结果变为0(假值)。因为条件为假,所以if(!k)下面的x++不会被执行。由于if(!k)的分支不执行,程序继续执行else后面的if(j)语句。由于j的值为2(真值),if(j)的条件为真。因为if(j)的条件为真,x被赋值为9。所以,程序段运行后x的值是9。 3:以下程序的运行结果是 ( ) #include <stdio.h> main( ) { int x = 2, y = 2, z = 5, j = 5; switch (x) { case 1:switch (x) { case 2: j++; case 1:x++;break; } case 2:z++;x++;break; } printf("%d,%d", j, z); } A.5,5 B.6,6 C.5,6 D.6,5 【答案】C 【解析】执行第一个switch(x)匹配case 2,执行z++;x++,打印值j和z分别为5和6。 4:若执行以下程序时从键盘上输入 4,则输出结果是 ( ) main() {int n; scanf("%d",&n); if(n++<4) printf("%d ",n); else printf("%d ",++n); } A.5 B.6 C.4 D.7 【答案】B 【解析】int n; 声明一个整型变量n。scanf("%d", &n); 读取输入的整数4,赋值给变量n。if(n++<4) 检查n的值是否小于4。此时n的值是4。由于n++是后缀自增,所以先比较n的原始值,然后n的值增加1。因为4不小于4,所以if条件为假。由于if条件为假,程序进入else语句块。else块中的printf函数包含一个前缀自增运算符++n。这意味着在printf执行之前,n的值首先增加1,所以n从5变为6。printf("%d ", ++n); 打印n的值,此时n的值已经是6。所以,程序的输出结果是6。 5:以下程序的运行结果是 ( ) #include <stdio.h> main() { int k = 1, j = 2; { switch (k) { case 1 : j += k; case 2 : case 3 : j += k; default : break; } k--; } printf("%d ", j); } A.5 B.7 C.6 D.4 【答案】D 【解析】变量k初始化为1,变量j初始化为2。进入switch(k)语句,控制表达式是k的值,即1。switch语句找到case 1:匹配,开始执行该case下的代码块。j += k; 执行后,j的值变为 2 + 1 = 3。由于case 1后面没有break语句,程序会发生"fall through"现象,继续执行下一个case分支。程序继续执行case 2:和case 3:,这两个case分支也没有break语句,所以j的值再次增加k的值(此时k的值仍为1)。j += k; 执行后,j的值变为 3 + 1 = 4。由于case 3后面也没有break语句,但这是最后一个case,所以没有更多的代码要执行。switch语句执行完毕,然后执行k--;,k的值减少1,变为0。最后,printf("%d ", j); 打印变量j的值,此时j的值为4。程序的输出结果是4。 6:若变量 x 为 char 类型,则不能判断 x 中的值为大写字母的表达式的选项是 ( ) A.x>=’A’&&x<=’Z’ B.x>=(‘D’-3)&&x<=(‘X’+2) C.’A’<=x<=’Z’ D.x>=65&&x<=90 【答案】C 【解析】C选项 'A' <= x <= 'Z':这个表达式在语法上是错误的,因为C语言不支持连续的两个小于等于或大于等于运算符。 二:分析题 判断下列表达式是true还是false? 1:88 > 2 && 'b'>'c' 【答案】false 2:36 > 15 || 'b'<'e' 【答案】true 3:!(75>39) 【答案】false 根据下列描述的条件,分别构造一个表达式 4:number等于或大于70,但是小于90 【答案】number>=70 && number<90 5:h不是字符q或k 【答案】h!=q && h!=k 6:number不在10~19之间(不包括10和19) 【答案】number>=19 || number <=10 7:下面的程序将打印什么? int main(void) { int num; for (num = 1; num <= 5; num++) { if (num % 3 == 0) putchar('$'); else putchar('*'); putchar('#'); putchar('%'); } putchar(' '); return 0; } 【答案】*#%*#%$#%*#%*#% 8:下面的程序将打印什么? #include <stdio.h> int main(void) { int i = 0; while (i < 3) { switch (i++) { case 0: printf("胖"); case 1: printf("帽子"); case 2: printf("猫"); default: printf("啊哈!"); } putchar(' '); } return 0; } 【答案】胖帽子猫啊哈! 帽子猫啊哈! 猫啊哈! 三:编程题 1:输入三个数,从小到大进行排序。 【答案】 #include <stdio.h> int main() { int a, b, c, temp; printf("请输入三个整数,用空格分隔:"); scanf("%d %d %d", &a, &b, &c); // 排序三个数 if (a > b) { temp = a; a = b; b = temp; } if (a > c) { temp = a; a = c; c = temp; } if (b > c) { temp = b; b = c; c = temp; } // 打印排序后的结果 printf("从小到大排序的结果是:%d %d %d ", a, b, c); return 0; } 2:编写一个程序读取输入,读到#字符停止,然后报告读取的空格数、换行符数和所有其他字符的数量 【答案】 #include <stdio.h> int main() { char ch; // 用来存储每次读取的字符 int spaceCount = 0; // 空格计数器 int newlineCount = 0; // 换行符计数器 int otherCount = 0; // 其他字符计数器 printf("请输入字符,输入#结束:"); while ((ch = getchar()) != '#') { // 循环读取字符直到遇到# switch (ch) { case ' ': spaceCount++; // 空格计数 break; case ' ': newlineCount++; // 换行符计数 break; default: otherCount++; // 其他字符计数 break; } } printf("读取的空格数:%d ", spaceCount); printf("读取的换行符数:%d ", newlineCount); printf("读取的其他字符数:%d ", otherCount); return 0; } 学科网(北京)股份有限公司 $$

资源预览图

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