内容正文:
编写说明: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避免贯穿。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$