2024年3月GESPC++一级真题解析

一、单选题(每题2分,共30分)

题目123456789101112131415
答案

1.C++表达式(3 - 2) * 3 + 5 的值是( )。

A. -13

B. 8

C. 2

D. 0

【答案】B

【考纲知识点】基本运算(算术运算的运算顺序相关知识)

【解析】在 C++ 中,算术表达式的运算遵循一定的优先级和结合性规则。

1.优先级规则:

括号的优先级最高,先计算括号内的表达式。对于给定的表达式(3 - 2) * 3 + 5,首先要计算括号内的3 - 2,其结果为1。

2.乘除运算优先于加减运算:

在计算完括号内的值后,接下来按照乘除先于加减的顺序进行运算。此时表达式变为1 * 3 + 5,先计算乘法1 * 3,结果为3。

3.最后进行加减运算:

经过前面的步骤,表达式进一步变为3 + 5,计算可得结果为8。

所以,该 C++ 表达式的值是8,答案选 B。

2.C++语句cout << "5%2=" << 5 % 2 执行后的输出是()。

A. 2 2

B. 1 1

C. 5%2=2

D. 5%2=1

【答案】D

【考纲知识点】基本运算(取余运算)、输出语句(cout的使用)

【解析】

1.取余运算

在 C++ 中,%是取余运算符,用于计算两个整数相除的余数。对于5 % 2,就是求 5 除以 2 所得的余数,5 除以 2 商为 2,余数为 1,所以5 % 2的结果是 1。

2.cout输出语句的执行逻辑:

cout是 C++ 中用于标准输出的流对象,它按照从左到右的顺序依次输出各个表达式的值。在语句cout << "5%2=" << 5 % 2中,先是输出字符串"5%2=",然后紧接着输出5 % 2这个表达式运算的结果(也就是前面计算出的 1)。

所以,整个语句执行后的输出就是5%2=1,答案为 D 选项。

3.执行C++语句cin >> a 时如果输入5+2,下述说法正确的是()。

A.变量a将被赋值为整数7

B.变量a将被赋值为字符串,字符串内容为5+2

C.语句执行将报错,不能输入表达式

D.依赖于变量a的类型。如果没有定义,会有编译错误

【答案】D

【考纲知识点】输入语句(cin的使用规则及数据类型相关知识)

【解析】

1.关于cin输入流对象:

在 C++ 中,cin是用于标准输入的流对象,它会根据变量的数据类型来尝试解析输入的内容,并将合适的值赋给变量。

2.变量类型的影响:

如果变量a事先被定义为整型(例如int a;),那么当执行cin >> a时,它期望从输入流中获取一个能转换为整型的合法数据。而输入5 + 2这种表达式形式,cin无法将其正确解析为整型值,此时输入操作会失败,变量a的值不会被正确赋值(它可能保持原来的未初始化状态或者是之前遗留的值,具体取决于编译器实现等因素)。

相反,如果变量a被定义为字符串类型(例如string a;),那么cin会把输入的5 + 2当作一个字符串整体,将其赋给变量a,此时变量a中的内容就是字符串"5 + 2"。

3.未定义变量的情况:

要是在代码中根本没有对变量a进行定义就直接使用cin >> a这样的语句,那么在编译阶段编译器就会检测到使用了未定义的标识符,从而报编译错误,因为编译器要求所有使用的变量都必须先经过合法的定义才能使用。

所以,语句cin >> a执行时的具体情况依赖于变量a的类型以及代码中是否已经正确定义了该变量,答案是 D 选项。

4.下面C++代码执行后的输出是( )。

A. a+1= 2

B. a+1=2

C. 2=2

D. 2= 2

【答案】A

【考纲知识点】输入输出语句

【解析】在这段代码中,<<左侧是一个字符串常量"a+1= ",右侧是表达式a+1,即变量a加上数字1。根据C++的输出规则,如果字符串和变量之间没有空格,则它们会直接连接在一起。所以,输出应该是"a+1= 2"。

5.下面C++代码执行后的输出是( )。

A. a+1= 2

B. a+1=2

C. 2=2

D. 2= 2

【答案】B

【考纲知识点】输入输出语句

【解析】printf函数中,格式化字符串中的格式控制符%d用于表示将要插入的整数,而实际插入的整数为a+1,即2。因此,最终输出应该是"a+1=2",其中没有额外的空格。

6.下面C++代码执行时输入21后,有关描述正确的是( )。

A.代码第4行被执行

B.第4和第7行代码都被执行

C.仅有代码第7行被执行

D.第8行代码将被执行,因为input()输入为字符串

【答案】A

【考纲知识点】控制语句结构(一级)

【解析】在输入为21时,21除以3的余数为0,因此条件N % 3 == 0 成立,执行第4行代码。由于满足了第一个条件,else if 和else语句块都不会执行,因此只有第4行代码被执行。

7.下面C++代码第2行,总共被执行次数是( )。

A.10

B.19

C.20

D.21

【答案】C

【考纲知识点】控制语句结构(一级)

【解析】循环的初始条件是int i=-10,结束条件是i<10。循环变量i从-10开始逐渐增加,直到等于10时退出循环。因此,循环总共执行了20次,每次循环都会执行第2行代码,所以第2行总共被执行的次数是20次。

8.下面C++代码执行后的输出是( )。

A.0

B.7

C.18

D.20

【答案】D

【考纲知识点】控制语句结构(一级)

【解析】i%3表示变量i除以3的余数,如果i不能被3整除,即i%3的结果不为0,则条件为真。同样地,i%7表示变量i除以7的余数,如果i不能被7整除,即i%7的结果不为0,则条件也为真。因此,if(i%3 && i%7) 表示当i既不能被3整除也不能被7整除时,整个条件为真。因此,满足条件的数字是1、2、4、5、8,它们的总和是1 + 2 + 4 + 5 + 8 = 20。

9.下面C++代码执行后的输出是( )。

A.9#6#3#

B.9#6#3#0#

C.8#7#5#4#2#1#

D.10#8#7#5#4#2#1#

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】开始时,N的初始值是10。在循环中,N每次减去1,然后检查新的N是否能被3整除。如果能被3整除,则输出N的值,后面跟着一个"#"符号,结果为9#6#3#0#。

10.下面C++代码用于判断键盘输入的整数是否为质数。质数是只能被1和它本身整除的数。在横线处应填入代码是( )。

A. N % i

B. N % i == 0

C. N / i == 0

D. N / i

【答案】B

【考纲知识点】控制语句结构(一级)

【解析】在横线处填入代码,以判断键盘输入的整数是否为质数,应该选择选项B. N % i == 0。

这是因为质数是只能被1和它本身整除的数。因此,我们需要判断键盘输入的整数N能否被i整除,即N % i == 0。如果整除次数cnt等于2,说明N能被1和它本身整除,即为质数。

11.下面关于整型变量int x的赋值语句不正确是( )。

A. x=(3.16);

B. x=3.16;

C. x=int(3.16);

D. x=3.16 int;

【答案】D

【考纲知识点】基本运算(一级)

【解析】在C++中,整型变量赋值语句应该是合法的整数值。选项A中,(3.16)被解释为一个表达式,赋值结果是3,因为类型转换会丢弃小数部分。选项B中,3.16是一个浮点数值,但可以隐式转换为整数类型,因为x是一个整型变量,所以这个赋值是合法的。选项C使用了显式的类型转换,将3.16转换为整数类型。而选项D中的int应该出现在变量名之前而不是赋值操作符之后,因此是错误的。

12.C++语言中下面可以完成数据输入的语句是( )。

A.printf语句

B.scanf语句

C.default语句

D.cout语句

【答案】B

【考纲知识点】输入输出语句

【解析】scanf语句用于从标准输入流(通常是键盘)读取数据。

13.在Dev C++中对一个写好的C++源文件要生成一个可执行程序需要执行下面哪个处理步骤?( )

A.创建

B.编辑

C.编译

D.调试

【答案】C

【考纲知识点】C++ 程序开发流程

【解析】在Dev C++ 中,要生成一个可执行程序,需要进行编译。编译过程将源代码转换为机器可执行的目标代码。其他选项的含义如下:

A.创建:创建新的源文件或项目;B.编辑:编辑源文件,修改其中的内容;D.调试:对程序进行调试,发现和修复其中的错误。

14.小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( )

A.小程序

B.计时器

C.操作系统

D.神话人物

【答案】C

【考纲知识点】科技常识(操作系统相关知识)

【解析】
A. 小程序:小程序是一种轻量级的应用程序,通常运行在操作系统之上,例如微信小程序运行在手机操作系统上。鸿蒙本身不是小程序,它是一个底层的系统,能够支持包括小程序在内的各类应用运行。

B. 计时器:计时器是一种具有计时功能的工具或软件功能。鸿蒙是一个庞大的系统,远不止是一个简单的计时器功能,它可以实现多设备的互联互通、资源调度等复杂功能。

C. 操作系统:鸿蒙(HarmonyOS)是由华为自主研发的操作系统。它采用了微内核架构,具有分布式能力,可以让不同设备之间实现无缝协同操作。在华为的众多智能设备中,包括手机、手表、平板等,都可以搭载鸿蒙操作系统。

D. 神话人物:这与科技毫无关系,鸿蒙在科技领域指代华为的操作系统,与神话人物没有联系。

所以,华为手表上运行的鸿蒙是操作系统,答案是 C 选项。

15.中国计算机学会(CCF)在2024年1月27日的颁奖典礼上颁布了王选奖,王选先生的重大贡献是(  )。

A.制造自动驾驶汽车

B.创立培训学校

C.发明汉字激光照排系统

D.成立方正公司

【答案】C

【考纲知识点】科技人物贡献

【解析】

A 选项:制造自动驾驶汽车

王选并没有在自动驾驶汽车领域有贡献。自动驾驶汽车涉及到的是人工智能、传感器、车辆控制等多方面的现代技术,与王选的研究方向无关。

B 选项:创立培训学校

王选的主要成就并非在创立培训学校方面。他专注于科研领域,通过技术创新带来了行业变革。

C 选项:发明汉字激光照排系统

王选成功研发了汉字激光照排系统。在这之前,中国的印刷行业主要依赖铅字排版,效率低且劳动强度大。汉字激光照排系统实现了用数字化技术处理汉字,极大地提高了排版效率,推动了中国印刷业的现代化进程,对中国乃至世界的出版印刷行业都产生了深远影响。

D 选项:成立方正公司

虽然方正公司与王选的技术有密切关系,但王选的核心贡献是发明汉字激光照排技术。方正公司是在这一技术基础上发展起来的,是技术产业化的体现,而不是王选的首要贡献。

所以,王选先生的重大贡献是发明汉字激光照排系统,答案是 C 选项。

二、判断题(每题2分,共20分)

题目12345678910
答案

1.在C++代码中变量n被赋值为27,则 cout << n%10 执行后输出的是7。( )

【答案】

【考纲知识点】变量的定义与使用、基本运算

【解析】C++中取余运算符%返回除法的余数。因此,27除以10的余数为7,因此输出为7。

2.C++语句printf("%d#%d&",2,3)执行后输出的是2#3&。( )

【答案】

【考纲知识点】输入输出语句

【解析】在C++中,printf函数是用于格式化输出的,%d用于指定输出整数,#和&是普通字符,会直接输出。因此,printf("%d#%d&", 2, 3) 将输出2#3&。

3.C++函数scanf()必须含有参数,且其参数为字符串型字面量,其功能是提示输入。( )

【答案】×

【考纲知识点】输入输出语句

【解析】在C++中,scanf()函数并不一定需要含有参数。scanf()函数的参数是可选的,可以根据需要选择是否传递参数。此外,scanf()函数的参数通常是格式控制字符串,指定要读取的输入类型和格式,而不是用于提示输入的字符串。因此,该函数的功能是读取输入,而不是提供提示。

4.C++表达式"10"*2执行时将报错,因为"10"是字符串类型而2是整数类型,它们数据类型不同,不能在一起运算。( )

【答案】√

【考纲知识点】基本运算

【解析】在C++中,字符串和整数之间的乘法运算是非法的。因此,表达式"10"*2将导致编译错误,因为无法对字符串类型和整数类型进行乘法运算。

5.在C++中,while可能是死循环,而for循环不可能是死循环。( )

【答案】×

【考纲知识点】控制语句结构

【解析】在C++中,无论是while循环还是for循环都有可能成为死循环,这取决于循环条件的设置以及循环体内部的逻辑。死循环的出现通常是由于循环条件设置不当或循环体内部的逻辑错误导致的,而不是循环类型本身决定的。因此,while循环和for循环都有可能成为死循环。

6.在C++,break语句用于提前终止当前层次循环,适用于while循环,但不适用于for循环。( )

【答案】×

【考纲知识点】控制语句结构

【解析】在C++中,break语句用于提前终止当前层次的循环,不论是while循环还是for循环都可以使用break语句。break语句的作用是在循环体内部遇到某个条件时立即终止循环的执行,而不管是哪种类型的循环。因此,break语句既适用于while循环,也适用于for循环。

7.C++语言中3.0和3的值相等,所以它们占用的存储空间也相同。( )

【答案】×

【考纲知识点】变量的定义与使用

【解析】在C++中,3.0和3在值上是相等的,但它们的数据类型不同。3是整数类型,而3.0是浮点数类型。整数和浮点数在内存中占用的存储空间通常是不同的,因为它们的表示方式和精度要求不同。

8.在C++的程序中,cin是一个合法的变量名。( )

【答案】√

【考纲知识点】变量的定义与使用

【解析】在C++中,cin是C++标准库中预定义的输入流对象,用于从标准输入设备(通常是键盘)读取数据。但在不同的作用域内可以作为有效地标识符,因此,cin能作为变量名在程序中定义。

9.小杨今年春节回奶奶家了,奶奶家的数字电视可以通过遥控器输入电视剧名称来找到想播放的电视剧,所以 可以推知里面有交互式程序在运行。( )

【答案】√

【考纲知识点】计算机基础与编程环境

【解析】用户可以通过遥控器与数字电视进行交互。

10.任何一个for循环都可以转化为等价的while循环( )。

【答案】√

【考纲知识点】控制语句结构

【解析】任何一个for循环都可以转化为等价的while循环,反之亦然。这是因为for循环和while循环都属于基本循环结构,可以实现相同的功能,只是语法不同。

三、编程题(每题25分,共50分)

1、小杨买书

【问题描述】

小杨同学积攒了一部分零用钱想要用来购买书籍,已知一本书的单价是13元,请根据小杨零用钱的金额,编写程序

计算最多可以购买多少本书,还剩多少零用钱。

【输入描述】

输入一个正整数 ,表示小杨拥有的零用钱数。

【输出描述】

输出包含两行,第一行,购买图书的本书,第二行剩余的零用钱数。

【样例输入 1】

100

【样例输出 1】

7

9

【样例输入 2】

199

【样例输出 2】

15

4

【题目大意】

本题描述了小杨想用自己积攒的零用钱买书的场景,已知书的单价是 13 元,需要根据输入的小杨零用钱的具体金额,通过编写程序计算出最多能买多少本书以及买完书后还剩下多少零用钱,并按照规定格式输出相应结果。

【考纲知识点】

1.输入输出操作:考查如何使用cin从标准输入获取用户输入的数据(这里是正整数类型的零用钱金额),以及如何使用cout按照要求分两行输出相应的结果(购买书籍数量和剩余零用钱数)。

2.算术运算:涉及整数的除法运算和取余运算,利用整数除法/计算可以购买的整本书的数量(会自动舍去小数部分),利用取余运算符%计算购买相应数量书籍后剩余的零用钱金额。

【解题思路】

整体思路就是借助 C++ 中的算术运算符来处理输入的零用钱金额这个数据。用零用钱的总数m除以书的单价 13 ,所得的商就是能够购买书籍的最大数量,这个通过m / 13来实现;而余数就是购买完这些书后剩下的零用钱,通过m % 13这个取余运算来获取,最后按照输出描述的要求,分两行分别输出购买书籍数量和剩余零用钱数即可。

【参考程序】

2、找因数

【问题描述】

小A最近刚刚学习了因数的概念,具体来说,如果一个正整数a可以被另一个正整数b整除,那么我们就说b是a的因数。

请你帮忙写一个程序,从小到大输出正整数a的所有因数。

【输入描述】

输入一行一个正整数a。保证a≤ 1,000。

【输出描述】

输出若干行,为a的所有约数,从小到大排列。

【样例输入 1】

1

【样例输出 1】

1

【样例输入 2】

6

【样例输出 2】

1

2

3

6

【样例输入 3】

10

【样例输出 3】

1

2

5

10

【题目大意】

本题基于因数的数学概念,描述了小 A 学习因数后需要编写程序找出给定正整数 a(a 小于等于 1000)的所有因数,并要求按照从小到大的顺序将这些因数逐行输出的任务场景。

【考纲知识点】

1.输入输出操作:考查如何运用 cin 语句准确获取用户从标准输入输入的正整数,以及利用 cout 语句按照要求逐行输出该正整数的所有因数,以此实现程序与用户的交互以及结果的正确展示。

2.循环结构的运用:主要涉及 for 循环的使用,通过设置合适的循环条件(从 1 到给定的正整数 a)来遍历所有可能成为因数的数,以此确保不会遗漏任何因数,实现对因数查找范围的有效控制。

3.条件判断与取余运算:运用取余运算(%)结合条件判断语句(if),通过判断给定正整数 a 除以某个数 i 的余数是否为 0,来确定 i 是否为 a 的因数,这是找出所有因数的核心逻辑所在。

【解题思路】

首先,通过 cin 语句接收用户输入的正整数 a ,将其存储在相应变量中。接着,利用 for 循环从 1 开始,每次递增 1,一直到 a 结束,依次对每个数 i 进行判断。在循环体中,借助取余运算 a % i 来检查 i 是否能整除 a ,如果 a % i 的结果等于 0,这就意味着 i 是 a 的因数,此时便通过 cout 语句将这个因数 i 按照从小到大的顺序逐行输出到屏幕上。经过整个循环的遍历和判断,就能找出并输出正整数 a 的所有因数了。

【参考程序】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值