第75卷 程序控制结构 专题训练卷 《C语言程序设计》湖南省(对口招生)《计算机应用类考纲百套卷》

2026-07-31
| 2份
| 24页
| 28人阅读
| 0人下载

内容正文:

编写说明:2027版湖南省普通高等学校对口招生考试计算机应用类《考纲百套卷》,依据《2022年湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共96份试卷,其中知识训练卷62份、专题训练卷21份、课程综合卷13份。 本试卷是第75卷,为专题训练卷,按“程序控制结构”专题范围和要求编写。具体内容为:⑤常用C语言程序设计语句。⑦C语言程序设计的三种基本结构。②if语句编程方法。(核心知识)。①顺序、分支和循环三种基本程序结构的实现。(技能部分);②for语句、while语句编程方法。(核心知识)。②交换、累加、累乘、求最大(小)值、穷举、排序(冒泡、插入、选择)、查找(顺序、折半)、级数计算、数制转换、字符处理等常用算法的实现。(技能部分);⑧常用C语言预处理命令。⑩程序编码规范。③位运算编程方法。(核心知识)。 湖南省对口招生考试 计算机应用类《考纲百套卷》 第75卷 专题训练——程序控制结构 (考试时间:45分钟 满分:100分) 一、单项选择题(共20题,每题2分,共40分) 1.if语句的条件表达式为0时,通常会(  ) A.重复执行对应分支 B.自动执行else分支 C.直接结束整个程序 D.跳过对应分支语句 2.if与else组成的双分支结构中,else分支在何时执行(  ) A.if条件为假时执行 B.if条件为真时执行 C.两个条件同时成立时 D.程序运行结束以后执行 3.C语言中表示不等关系的运算符是(  ) A.==表示两个值不等 B.!=表示两个值不等 C.<=表示两个值不等 D.>=表示两个值不等 4.当if分支需要执行多条语句时,应将它们放入(  ) A.圆括号组成的条件块 B.方括号组成的数据块 C.花括号组成的语句块 D.尖括号组成的输入块 5.没有花括号的嵌套if中,else默认匹配(  ) A.最外层出现的if语句 B.程序中最后一个if语句 C.最近的未配对if语句 D.后续任意一个if语句 6.在表达式a||b&&c中,通常先计算的部分是(  ) A.a||b这一逻辑部分 B.b&&c这一逻辑部分 C.a与b的相等关系 D.整个表达式的赋值部分 7.条件运算符x?m:n的结果取值规则是(  ) A.x真取m否则取n B.x真同时取m和n C.x假取m否则取n D.先取n再判断x真假 8.逻辑与具有短路特性时,左操作数为假会使右操作数(  ) A.仍然必须先求值 B.自动转换为真值 C.重新执行一次求值 D.通常不再求值 9.若逻辑或左侧结果已经为真,右侧表达式通常会(  ) A.被短路而不再求值 B.仍然必须先求值 C.自动转换为假值 D.重新执行一次求值 10.switch语句中case后的标号应当是(  ) A.运行时输入的字符串 B.只能变化的变量值 C.整型常量表达式 D.带小数的实数表达式 11.同一个switch中两个case使用相同标号时,通常会(  ) A.按书写顺序各执行一次 B.自动合并两个case分支 C.只保留最后出现的case D.产生重复case编译错误 12.switch语句中break执行后,控制流通常转到(  ) A.当前case语句的开头 B.switch语句之后的位置 C.下一个case语句的开头 D.整个程序结束语句的位置 13.关于switch中的default分支,正确的说法是(  ) A.可以省略,且位置不固定 B.只能写在第一个case前 C.只能写在最后case之后 D.default位置任意 14.switch分支中没有break时,可能出现的现象是(  ) A.自动回到switch表达式 B.立即结束当前switch结构 C.继续执行后续case语句 D.重新比较前一个case标号 15.判断整数x是否在闭区间[5,12]内,合适的条件是(  ) A.x>=5||x<=12 B.x>5&&x<12 C.x<=5&&x>=12 D.x>=5&&x<=12 16.将多个互斥等级从高到低判断时,较合适的是(  ) A.先判断低等级再逐级判断 B.先判断高等级再逐级判断 C.使用多个独立if分别输出 D.先输出全部等级再判断 17.下列写法中,能明确控制else范围的是(  ) A.用花括号包住对应语句 B.只依靠缩进改变范围 C.把else写在注释后面 D.用空格替代语句块符号 18.对于按固定字符选取若干互斥操作的情形,适合使用(  ) A.使用连续赋值语句处理 B.只使用一个关系运算符 C.把操作内容统一写成注释 D.使用switch分支结构 19.结构化控制结构通常强调每个基本结构具有(  ) A.任意数量的入口出口 B.必须包含一个循环体 C.清晰的入口和出口 D.只能嵌套一种结构 20.在多条件判断中,使用else if的主要好处是(  ) A.所有条件成立后一起执行 B.前一条件成立后停止判断 C.让每个分支都重复执行 D.把关系运算变成赋值运算 二、程序填空题(共5题,每题4分,共20分) 1.下面程序根据温度输出提示语,请在横线处填入适当内容。 #include <stdio.h> int main() { int t = 28; if (t __________ 35) printf("hot "); else if (t __________ 15) printf("warm "); else printf("cold "); return 0; } 2.下面程序利用条件运算符选择较小值,请在横线处填入适当内容。 #include <stdio.h> int main() { int a = 19, b = 14, smaller; smaller = a __________ b ? a __________ b; printf("%d ", smaller); return 0; } 3.下面程序根据月份输出季节,请在横线处填入适当内容。 #include <stdio.h> int main() { int month = 11; switch (month) { case 12: case 1: case 2: printf("winter "); __________; case 3: case 4: case 5: printf("spring "); __________; default: printf("summer_or_autumn "); } return 0; } 4.下面程序判断整数是否为三位正偶数,请在横线处填入适当内容。 #include <stdio.h> int main() { int n = 246; if (n __________ 100 && n __________ 1000 && n % 2 == 0) printf("yes "); else printf("no "); return 0; } 5.下面程序使用逻辑运算和条件分支判断优惠资格,请在横线处填入适当内容。 #include <stdio.h> int main() { int amount = 120, points = 85; if (amount __________ 100 || points __________ 80) printf("discount "); else printf("normal "); return 0; } 三、程序改错题(共4题,每题4分,共16分) 1.下面程序判断输入数是否为两位数,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int n = 36; if (n >= 10 || n <= 99) printf("two_digit ") else printf("other "); return 0; } 2.下面程序根据分数输出等级,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int score = 74; if (score >= 90) printf("A "); else if (score >= 60) printf("C "); else if (score >= 80) printf("B "); else printf("D "); return 0; } 3.下面程序规定字符x选择加法、字符z选择减法,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { char op = 'x'; switch (op) { case 'x': printf("add "); case 'y': printf("sub "); break; default: printf("other "); break; } return 0; } 4.下面程序用条件运算符求绝对值,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int x = -13, value; value = x > 0 ? x, -x; printf("%d ", value) return 0; } 四、写程序运行结果题(共4题,每题4分,共16分) 1.写出下面程序的运行结果。 #include <stdio.h> int main() { int a = 9, b = 14, c; c = a > b ? a + b : b - a; if (c < 6) c = c + 4; else c = c * 2; printf("%d %d ", c, a + b); return 0; } 2.写出下面程序的运行结果。 #include <stdio.h> int main() { int n = 3, total = 0; switch (n) { case 1: total = total + 1; case 2: total = total + 2; break; case 3: total = total + 3; case 4: total = total + 4; break; default: total = 9; } printf("%d ", total); return 0; } 3.写出下面程序的运行结果。 #include <stdio.h> int main() { int x = 0, y = 2, result = 0; if (x++ || ++y) result = result + 1; if (y == 3 && ++x) result = result + 4; printf("%d %d %d ", x, y, result); return 0; } 4.写出下面程序的运行结果。 #include <stdio.h> int main() { int score = 79, grade; if (score >= 90) grade = 4; else if (score >= 80) grade = 3; else if (score >= 60) grade = 2; else grade = 1; if (grade == 2) grade = grade + 5; printf("%d %d ", grade, score % 10); return 0; } 五、程序设计题(共1题,共8分) 1.编写程序:输入年份year和月份month,使用switch判断该月有多少天。1、3、5、7、8、10、12月输出31;4、6、9、11月输出30;2月根据闰年规则判断,闰年输出29,否则输出28;其他月份输出invalid。闰年规则为能被400整除,或能被4整除且不能被100整除。     原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $ 编写说明:2027版湖南省普通高等学校对口招生考试计算机应用类《考纲百套卷》,依据《2022年湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。本专辑涵盖三个部分,第一部分为知识训练卷,第二部分为专题训练卷,第三部分为课程综合卷。本专辑共96份试卷,其中知识训练卷62份、专题训练卷21份、课程综合卷13份。 本试卷是第75卷,为专题训练卷,按“程序控制结构”专题范围和要求编写。具体内容为:⑤常用C语言程序设计语句。⑦C语言程序设计的三种基本结构。②if语句编程方法。(核心知识)。①顺序、分支和循环三种基本程序结构的实现。(技能部分);②for语句、while语句编程方法。(核心知识)。②交换、累加、累乘、求最大(小)值、穷举、排序(冒泡、插入、选择)、查找(顺序、折半)、级数计算、数制转换、字符处理等常用算法的实现。(技能部分);⑧常用C语言预处理命令。⑩程序编码规范。③位运算编程方法。(核心知识)。 湖南省对口招生考试 计算机应用类《考纲百套卷》 第75卷 专题训练——程序控制结构 (考试时间:45分钟 满分:100分) 一、单项选择题(共20题,每题2分,共40分) 1.if语句的条件表达式为0时,通常会(  ) A.重复执行对应分支 B.自动执行else分支 C.直接结束整个程序 D.跳过对应分支语句 【答案】D 【解析】C语言把0作为假,if条件为0时不执行对应分支,程序继续执行if语句之后的内容;只有存在else且满足配对时才会执行else分支。 2.if与else组成的双分支结构中,else分支在何时执行(  ) A.if条件为假时执行 B.if条件为真时执行 C.两个条件同时成立时 D.程序运行结束以后执行 【答案】A 【解析】双分支结构中,if条件为真执行if分支,为假执行else分支,两个分支通常只执行其中一个。 3.C语言中表示不等关系的运算符是(  ) A.==表示两个值不等 B.!=表示两个值不等 C.<=表示两个值不等 D.>=表示两个值不等 【答案】B 【解析】!=表示不等于;==表示相等,<=表示小于或等于,>=表示大于或等于。 4.当if分支需要执行多条语句时,应将它们放入(  ) A.圆括号组成的条件块 B.方括号组成的数据块 C.花括号组成的语句块 D.尖括号组成的输入块 【答案】C 【解析】花括号可以把多条语句组成复合语句,使if或else明确控制整个语句块,避免只有第一条语句受条件控制。 5.没有花括号的嵌套if中,else默认匹配(  ) A.最外层出现的if语句 B.程序中最后一个if语句 C.最近的未配对if语句 D.后续任意一个if语句 【答案】C 【解析】C语言规定else与最近的、尚未和else配对的if匹配;为消除歧义,应使用花括号明确层次。 6.在表达式a||b&&c中,通常先计算的部分是(  ) A.a||b这一逻辑部分 B.b&&c这一逻辑部分 C.a与b的相等关系 D.整个表达式的赋值部分 【答案】B 【解析】逻辑与&&的优先级高于逻辑或||,因此先计算b&&c,再把结果与a进行逻辑或运算。 7.条件运算符x?m:n的结果取值规则是(  ) A.x真取m否则取n B.x真同时取m和n C.x假取m否则取n D.先取n再判断x真假 【答案】A 【解析】条件运算符先判断x,x为真时结果为m,x为假时结果为n,适合表示简单的二选一。 8.逻辑与具有短路特性时,左操作数为假会使右操作数(  ) A.仍然必须先求值 B.自动转换为真值 C.重新执行一次求值 D.通常不再求值 【答案】D 【解析】&&左侧为假时结果已经确定为假,C语言通常不再计算右侧表达式,这就是逻辑与的短路特性。 9.若逻辑或左侧结果已经为真,右侧表达式通常会(  ) A.被短路而不再求值 B.仍然必须先求值 C.自动转换为假值 D.重新执行一次求值 【答案】A 【解析】||左侧为真时结果已经确定为真,C语言通常不再计算右侧表达式,这就是逻辑或的短路特性。 10.switch语句中case后的标号应当是(  ) A.运行时输入的字符串 B.只能变化的变量值 C.整型常量表达式 D.带小数的实数表达式 【答案】C 【解析】case标号需要能够在编译期确定,通常使用整型常量表达式;不能直接使用字符串或带小数的实数作为case标号。 11.同一个switch中两个case使用相同标号时,通常会(  ) A.按书写顺序各执行一次 B.自动合并两个case分支 C.只保留最后出现的case D.产生重复case编译错误 【答案】D 【解析】同一switch中的case标号必须具有唯一性,重复标号会造成编译错误,不能依靠书写顺序自动解决。 12.switch语句中break执行后,控制流通常转到(  ) A.当前case语句的开头 B.switch语句之后的位置 C.下一个case语句的开头 D.整个程序结束语句的位置 【答案】B 【解析】break结束当前switch执行,控制流转到switch之后;它不会重新执行当前case,也不会跳回程序开头。 13.关于switch中的default分支,正确的说法是(  ) A.可以省略,且位置不固定 B.只能写在第一个case前 C.只能写在最后case之后 D.default位置任意 【答案】A 【解析】default可以省略,放在case之前或之后都可以;一个switch通常至多设置一个default分支。 14.switch分支中没有break时,可能出现的现象是(  ) A.自动回到switch表达式 B.立即结束当前switch结构 C.继续执行后续case语句 D.重新比较前一个case标号 【答案】C 【解析】没有break时,程序会从当前case继续向下执行,可能执行后续case中的语句,这种现象称为贯穿。 15.判断整数x是否在闭区间[5,12]内,合适的条件是(  ) A.x>=5||x<=12 B.x>5&&x<12 C.x<=5&&x>=12 D.x>=5&&x<=12 【答案】D 【解析】闭区间包含两个端点,要求x同时满足不小于5和不大于12,因此使用x>=5&&x<=12。 16.将多个互斥等级从高到低判断时,较合适的是(  ) A.先判断低等级再逐级判断 B.先判断高等级再逐级判断 C.使用多个独立if分别输出 D.先输出全部等级再判断 【答案】B 【解析】从高到低使用if、else if、else,可以保证一个分数只进入一个等级,且高等级不会被低等级分支重复处理。 17.下列写法中,能明确控制else范围的是(  ) A.用花括号包住对应语句 B.只依靠缩进改变范围 C.把else写在注释后面 D.用空格替代语句块符号 【答案】A 【解析】C语言不以缩进决定语句归属,花括号才能明确复合语句范围;只调整空格或缩进不会改变控制关系。 18.对于按固定字符选取若干互斥操作的情形,适合使用(  ) A.使用连续赋值语句处理 B.只使用一个关系运算符 C.把操作内容统一写成注释 D.使用switch分支结构 【答案】D 【解析】当控制量取若干离散字符或整数值时,switch配合case能够清晰表示互斥分支,并可用break结束分支。 19.结构化控制结构通常强调每个基本结构具有(  ) A.任意数量的入口出口 B.必须包含一个循环体 C.清晰的入口和出口 D.只能嵌套一种结构 【答案】C 【解析】结构化程序设计强调基本结构的入口和出口清晰,顺序、选择、循环可以按层次组合,便于理解和验证。 20.在多条件判断中,使用else if的主要好处是(  ) A.所有条件成立后一起执行 B.前一条件成立后停止判断 C.让每个分支都重复执行 D.把关系运算变成赋值运算 【答案】B 【解析】else if链在前面某个条件成立后执行对应分支并跳过后续条件,适合处理互斥的多分支情况。 二、程序填空题(共5题,每题4分,共20分) 1.下面程序根据温度输出提示语,请在横线处填入适当内容。 #include <stdio.h> int main() { int t = 28; if (t __________ 35) printf("hot "); else if (t __________ 15) printf("warm "); else printf("cold "); return 0; } 【答案】第1空:>=;第2空:>=(每空2分) 【解析】温度达到35时输出hot,未达到35但达到15时输出warm,因此两个条件都使用大于或等于比较,并由else if保证分支互斥。 2.下面程序利用条件运算符选择较小值,请在横线处填入适当内容。 #include <stdio.h> int main() { int a = 19, b = 14, smaller; smaller = a __________ b ? a __________ b; printf("%d ", smaller); return 0; } 【答案】第1空:<;第2空::(每空2分) 【解析】条件运算符的完整形式是条件?真值表达式:假值表达式。a<b成立时选择a,否则选择b,因此两个空分别为<和冒号。 3.下面程序根据月份输出季节,请在横线处填入适当内容。 #include <stdio.h> int main() { int month = 11; switch (month) { case 12: case 1: case 2: printf("winter "); __________; case 3: case 4: case 5: printf("spring "); __________; default: printf("summer_or_autumn "); } return 0; } 【答案】第1空:break;第2空:break(每空2分) 【解析】冬季和春季的多个月份分别共用一组语句,输出后都要用break跳出switch;否则会贯穿执行后面的分支。month为11时进入default。 4.下面程序判断整数是否为三位正偶数,请在横线处填入适当内容。 #include <stdio.h> int main() { int n = 246; if (n __________ 100 && n __________ 1000 && n % 2 == 0) printf("yes "); else printf("no "); return 0; } 【答案】第1空:>=;第2空:<(每空2分) 【解析】三位数范围是大于或等于100且小于1000,再结合n%2==0判断偶数,因此两个关系运算符分别为>=和<。 5.下面程序使用逻辑运算和条件分支判断优惠资格,请在横线处填入适当内容。 #include <stdio.h> int main() { int amount = 120, points = 85; if (amount __________ 100 || points __________ 80) printf("discount "); else printf("normal "); return 0; } 【答案】第1空:>=;第2空:>=(每空2分) 【解析】只要消费金额达到100或积分达到80即可优惠,两个条件分别是amount>=100和points>=80,并使用逻辑或连接。 三、程序改错题(共4题,每题4分,共16分) 1.下面程序判断输入数是否为两位数,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int n = 36; if (n >= 10 || n <= 99) printf("two_digit ") else printf("other "); return 0; } 【答案】①if (n >= 10 || n <= 99)改为if (n >= 10 && n <= 99);②printf("two_digit ")后补分号。 【解析】两位数必须同时满足不小于10和不大于99,逻辑连接应使用&&;第一条printf语句还缺少结束分号。 2.下面程序根据分数输出等级,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int score = 74; if (score >= 90) printf("A "); else if (score >= 60) printf("C "); else if (score >= 80) printf("B "); else printf("D "); return 0; } 【答案】①else if (score >= 60)与else if (score >= 80)的位置交换;②将第二个分支输出的C改为B。 【解析】多分支条件应从高分到低分排列,否则达到80分的成绩会先满足score>=60而错误输出C;交换后第二档应输出B。 3.下面程序规定字符x选择加法、字符z选择减法,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { char op = 'x'; switch (op) { case 'x': printf("add "); case 'y': printf("sub "); break; default: printf("other "); break; } return 0; } 【答案】①case 'x'的printf语句后补break;②将case 'y'改为case 'z'。 【解析】x分支输出后必须break,避免继续贯穿到后续分支;题目规定减法操作由字符z选择,因此case标签应写成'z'。 4.下面程序用条件运算符求绝对值,其中有2处错误,请找出并改正。 #include <stdio.h> int main() { int x = -13, value; value = x > 0 ? x, -x; printf("%d ", value) return 0; } 【答案】①value = x > 0 ? x, -x改为value = x > 0 ? x : -x;②printf语句末尾补分号。 【解析】条件运算符必须使用?和:组成二选一表达式,不能用逗号代替冒号;printf语句缺少结束分号。 四、写程序运行结果题(共4题,每题4分,共16分) 1.写出下面程序的运行结果。 #include <stdio.h> int main() { int a = 9, b = 14, c; c = a > b ? a + b : b - a; if (c < 6) c = c + 4; else c = c * 2; printf("%d %d ", c, a + b); return 0; } 【答案】9 23 【解析】a>b为假,条件运算符取b-a=5;c<6成立,c变为5+4=9。注意重新计算可得c为9,因此程序输出应为9 23。 2.写出下面程序的运行结果。 #include <stdio.h> int main() { int n = 3, total = 0; switch (n) { case 1: total = total + 1; case 2: total = total + 2; break; case 3: total = total + 3; case 4: total = total + 4; break; default: total = 9; } printf("%d ", total); return 0; } 【答案】7 【解析】n为3,执行case 3使total变为3;因没有break继续执行case 4,total变为7,随后break跳出switch。 3.写出下面程序的运行结果。 #include <stdio.h> int main() { int x = 0, y = 2, result = 0; if (x++ || ++y) result = result + 1; if (y == 3 && ++x) result = result + 4; printf("%d %d %d ", x, y, result); return 0; } 【答案】2 3 5 【解析】第一次||左侧x++的旧值为0,x变为1,因此执行++y,y变为3,条件成立,result加1;第二个条件中y==3为真,++x使x变为2且为真,result再加4,输出2 3 5。 4.写出下面程序的运行结果。 #include <stdio.h> int main() { int score = 79, grade; if (score >= 90) grade = 4; else if (score >= 80) grade = 3; else if (score >= 60) grade = 2; else grade = 1; if (grade == 2) grade = grade + 5; printf("%d %d ", grade, score % 10); return 0; } 【答案】7 9 【解析】79分不满足90和80,但满足60,所以grade先为2;随后grade==2成立,grade变为7;79%10为9,输出7 9。 五、程序设计题(共1题,共8分) 1.编写程序:输入年份year和月份month,使用switch判断该月有多少天。1、3、5、7、8、10、12月输出31;4、6、9、11月输出30;2月根据闰年规则判断,闰年输出29,否则输出28;其他月份输出invalid。闰年规则为能被400整除,或能被4整除且不能被100整除。 【答案】参考程序如下。评分点:正确声明并读入year、month(2分);正确使用switch完成月份分组(2分);正确判断2月闰年规则(3分);正确处理无效月份并保证各分支结束(1分)。 #include <stdio.h> int main() { int year, month; scanf("%d%d", &year, &month); switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 "); break; case 4: case 6: case 9: case 11: printf("30 "); break; case 2: if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) printf("29 "); else printf("28 "); break; default: printf("invalid "); } return 0; } 【解析】程序先用switch按月份分组,多个case可以共用同一条输出语句;2月内部再用逻辑或和逻辑与组合判断闰年;每组分支用break避免贯穿。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 学科网(北京)股份有限公司 学科网(北京)股份有限公司 $

资源预览图

第75卷 程序控制结构 专题训练卷 《C语言程序设计》湖南省(对口招生)《计算机应用类考纲百套卷》
1
第75卷 程序控制结构 专题训练卷 《C语言程序设计》湖南省(对口招生)《计算机应用类考纲百套卷》
2
第75卷 程序控制结构 专题训练卷 《C语言程序设计》湖南省(对口招生)《计算机应用类考纲百套卷》
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。