当前位置:首页 » 《资源分享》 » 正文

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

2 人参与  2024年12月22日 08:02  分类 : 《资源分享》  评论

点击全文阅读


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

题目123456789101112131415
答案ADDBCDDBCDADCDB

1.据有关资料,山东大学于1972年研制成功DJL-1计算机,并于1973年投入运行,其综合性能居当时全国第三 位。DJL-1计算机运算控制部分所使用的磁心存储元件由磁心颗粒组成,设计存贮周期为2μs(微秒)。那么该磁心存储元件相当于现代计算机的( )。

A.内存

B.磁盘

C. CPU

D.显示器

【答案】A

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

【解析】本题考察计算机组成部分;题干强调磁心元件为计算机运算控制部分的存储元件,计算机中内存用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据,故该元件属于内存,所以本题正确答案为A。

2.C++程序执行出现错误,不太常见的调试手段是( )。
A.阅读源代码
B.单步调试
C.输出执行中间结果
D.跟踪汇编码

【答案】D

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

【解析】本题考察程序调试功能;阅读源代码 是一种非常常见的调试方法,通过查看代码逻辑来找出可能的问题;单步调试 是通过逐行执行代码,观察每一步的状态和变化,这也是常见的调试方法;输出执行中间结果 通过在代码中添加打印语句,查看程序运行时的变量值和状态,也是常见的方法;跟踪汇编码 是指查看编译后的汇编代码来调试程序,这是比较低级、复杂且不太常用的调试方式。所以本题正确答案为D。

3.在C++中,下列表达式错误的是( )。

A. cout << "Hello,GESP!" << endl;

B. cout << 'Hello,GESP!' << endl;

C. cout << """Hello,GESP!""" << endl;

D. cout << "Hello,GESP!' << endl;

【答案】D

【考纲知识点】输入输出语句(一级)

【解析】本题考察cout输出语句:在C++中通常使用单引号(' ')定义字符,使用双引号("")定义字符串。选项A输出内容在双引号内部,格式为字符串,能够正确输出Hello,GESP!;选项B单引号内格式为字符,只应该包含1个字符,但是实际传入多个字符,可能会产生某些特定的输出,但不会是Hello,GESP!。选项C前两个双引号为一对,内部无内容故没有输出,中间两个双引号为一对,能够正确输出Hello,GESP!,最后两个双引号为一对,内部无内容故没有输出,最终输出内容为Hello,GESP!,输出内容不会含有双引号,如果想要输出双引号(""),需要使用转义字符(\);选项D有一个双引号和一个单引号互不成对,会导致程序编译失败。所以本题正确答案为D。

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

A.14

B.4

C.1

D.0
【答案】B

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

【解析】本题考察算术运算优先级:算式乘、除、取模运算优先级一致且比加、减运算优先级高,所以题目表达式先算3 * 2 ,结果为6,再算10 – 6,结果为4。所以本题正确答案为B。

5.在C++中,假设N为正整数10,则 cout << (N / 3 + N % 3) 将输出( )。

A. 6

B. 4.3

C. 4

D. 2
【答案】C

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

【解析】本题主要考察C++中的基本算术运算:在C++中,如果被除数和除数均为整数类型,那么进行除法运算的结果将会舍去余数,仅保留整数部分的商;%为取模操作,在C++中取模和取余功能一致。题目中N为整数10,除数3也为整数,所以N / 3 结果为3。N % 3 结果为1。最后算式为3 + 1结果为4。所以本题正确答案为D。

6.C++语句 printf("6%2={%d}", 6%2) 执行后的输出是( )。

A."6%2={6%2}"

B.6%2={6%2}

C. 0=0

D. 6%2={0}
【答案】D

【考纲知识点】输入输出语句(一级)

【解析】本题考察printf格式化输出语句;printf语句中将会输出双引号中的格式化字符串,其中(%)为格式说明符,如本题的%d表示使用整数格式输出参量表中对应参量的值。参量表为格式化字符串右侧内容,与格式化字符串中的格式说明符一一对应。本题执行语句后会输出双引号中的内容,其中%d对应参量表中的6 % 2,其值为0。最终输出为6%2={0}。所以本题正确答案为D。

7.成功执行下面的C++代码,先后从键盘上输入5回车和2回车,输出是( )。

A.将输出整数7

B.将输出52,5和2之间没有空格

C.将输出5和2,5和2之间有空格

D.执行结果不确定,因为代码段没有显示a和b的数据类型

【答案】D

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

【解析】本题考查变量的使用与变量运算;题目中没有给定a、b的数据类型,输出的结果不确定。所以本题正确答案为D。

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

A.55

B.45

C.10

D.9


【答案】B

【考纲知识点】循环语句(一级)

【解析】

本题考查for循环语句;题目循环语句用i进行枚举,i从0开始,i逐个枚举从0、1、2···直到9;Sum从初值0开始,循环体语句为Sum累加每次i的值,最终结果为0~9求和为45。所以本题正确答案为B。

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

A. 55

B. 45

C. 10

D. 9
【答案】C

【考纲知识点】循环语句(一级)

【解析】本题考查for循环语句;题目循环语句用i控制循环,i从0开始,逐个枚举从0、1、2···直到9,一共10次循环。N初值从0开始,每次循环增加1,故循环结束后N的值为10,最后输出结果为10.所以本题正确答案为C。

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

A.5

B.4

C.2

D.0

【答案】D

【考纲知识点】循环语句(一级)、选择语句(一级)

【解析】本题考查for循环语句、if语句以及continue语句;题目循环语句用i控制,i从1开始,每次循环增加2,i逐个枚举从1、3、5···直到9。循环内判断i除以2的余数是否为1(判断i是否为奇数):如果成立,将会continue跳过本次循环之后的语句,直接进入到下一次循环;如果不成立,才会执行语句N+=1。由于i每次循环的值除以2的余数均为1,所以不会执行N+=1,因此循环结束N的值没有变化,仍为初值0。所以本题正确答案为D。

11.下面C++代码执行时输入 14+7 后,正确的输出是( )。

A.第5行代码2, 0

B.第5行代码1, 0

C.第7行代码1

D.第7行代码0


【答案】A

【考纲知识点】输入输出语句(一级)、基本运算(一级)

【解析】本题考察格式化输入输出语句以及基本算术、逻辑运算;

题目使用scanf输入,需求%d为整数格式,键盘输入14+7,程序只会读入加法字符(+)前面的整数部分14,因此P的值输入为14,满足if语句中的条件,执行if语句中的输出语句,14 % 3结果为2,14 % 7 结果为0,最终程序输出为第5行代码2, 0。所以本题正确答案为A。

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

A. 190 20

B. 95 10

C. 90 19

D. 90 10

【答案】D

【考纲知识点】循环语句(一级)、变量的定义与使用(一级)

【解析】本题考查for循环语句和自增(++)运算符;题目循环中循环控制变量为i,循环语句中又执行了i++语句,考虑第1次循环:初始count值为0,i值为0,s值为0,i<20成立;进入循环体,s+=i++语句根据运算优先级可拆分为两步:先执行s+=i,再执行i++,因此s值仍为0,i值变为1,循环体结束;执行i++,count++,i的值变为2,count的值变为1。后续循环执行流程一致,最终一共进行10次循环,s值变化为0+2+4+···+18=90,count的值变化为1、2、3····、10。所以本题正确答案为D。

13.下面C++代码拟用于计算整数N的位数,比如对 123 则输出 123是3位整数 ,但代码中可能存在bug。下面 有关描述正确的是( )。

A.变量N0占用额外空间,可以去掉

B.代码对所有整数都能计算出正确位数

C. L11标记的代码行简单修改后可以对正整数给出正确输出

D. L11标记的代码行的输出格式有误

【答案】C

【考纲知识点】循环语句(一级)、变量的定义与使用(一级)

【解析】本题考查数字拆位原理;变量N0如果不提前存储N的初始输入,循环结束后N的值变为0,无法最后输出时展示N的初始值,选项A错误;题目程序变量类型均为int类型,如果输入超出int类型最大值则会溢出,无法计算出正确位数,选项B错误;对L11标记的代码行将N修改为N0后可以最后展示N的初始值,选项C正确;L11标记的代码行的格式没有问题,选项D错误

所以本题正确答案为C。

14.下面的C++代码用于求连续输入的若干正五位数的百位数之和。例如输入 32488 25731 41232 0 ,则输出3个正五位数的百位数之和为13 。有关描述错误的是( )。

A.执行代码时如果输入23221 23453 12345 11111 0 ,则最后一行Sum的值是10

B.执行代码时如果输入2322 2345 1234 1111 0 ,程序也能运行

C.将代码标记为L6那行改为M = (M % 1000 / 100); ,同样能实现题目要求

D.将代码标记为L6那行改为M = (M % 100 / 10); ,同样能实现题目要求

【答案】D

【考纲知识点】循环语句(一级)

【解析】本题考察while循环语句和基本算术运算;选项A输入的4个五位数的百位数为2、4、3、1,其和为10,选项A描述正确;选项B输入的数据为4个四位数,程序可以正常运行,不会编译失败,选项B描述正确;选项C考虑输入五位数12345,12345 % 1000 值为345,345/100值为3,即为所需的百位数3,选项C描述正确;选项D考虑输入五位数12345,12345 % 100值为45,45 / 10值为4,不为所需百位数3,选项D描述错误。所以本题正确答案为D。

15.如果一个正整数N能够表示为X*(X+1)的形式,这里称它是一个“兄弟数”。例如,输入6,则输出“6是一个兄弟数”。下面C++代码用来判断N是否为一个“兄弟数”,在横线处应填入的代码可从i)-iv)中选择,则有几个能完成功 能?( )。

A. 1

B. 2

C. 3

D. 4
【答案】B

【考纲知识点】变量的定义与使用(一级)

【解析】本题主要考察变量的运算;考虑N为6与7的情况,首先6是“兄弟数”,7不是“兄弟数”。i)当循环变量i的值为2时即可成功判断6,N为7不会输出;ii)当循环变量i的值为3时即可成功判断6,N为7不会输出;iii)当循环变量i的值为2时即可成功判断6,但是N为7时,当i为2时会错误判断;iv)当循环变量i的值为3时即可成功判断6,但是N为7时,当i为3时会错误判断;所以i)与ii)可以成功判断。所以本题正确答案为B。

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

题目12345678910
答案×××××××

1.小杨最近开始学习C++编程,老师说C++是一门面向对象的编程语言,也是一门高级语言。( )
【答案】
【考纲知识点】计算机基础(一级)
【解析】本题考察编程语言基本知识;C++是一门面向对象的高级编程语言。所以本题正确。

2.在C++中,表达式 10/4 和 10%4 的值相同,都是整数2,说明 / 和 % 可以互相替换。( )
【答案】×
【考纲知识点】基本算术运算(一级)
【解析】本题考察基本算术运算中的除法(/)和取模(%);除法和取模(在C++中与取余效果一致)是不同的功能运算,不能相互替换。所以本题错误。

3.N是C++程序中的整型变量,则语句 scanf("%d", &N) 能接收形如正整数、负整数和0输入,但如果输入含字母或带小数点数,将导致无法执行。 ( )
【答案】×
【考纲知识点】输入输出语句(一级)
【解析】本题考察scanf格式化输入语句;%d对应整数类型数据的输入,如果输入含字母或带小数点数,程序可以执行,但是会导致未知的输入结果。所以本题错误。


4.下面C++代码能够执行,则将输出45。( )
【答案】×
【考纲知识点】循环语句(一级)
【解析】本题考察for循环语句;本题循环变量i枚举从0、1、2···直到9,循环体中执行Sum+=i,但是Sum没有给定初始值,所以最终Sum的值未知。所以本题错误。

5.在C++代码中整型变量X被赋值为20.24,则 cout << (X++, X+1) / 10 执行后输出的是 2.124 。( )
【答案】×
【考纲知识点】变量的定义与使用(一级)、输入输出语句(一级)
【解析】本题考察变量的赋值和语句的执行顺序,本题X为整型变量,赋初值后为20,然后会先执行X++,X的值为21,然后执行(X+1)/ 10,输出结果为2。所以本题错误。
6.下面C++代码执行后,最后一次输出是10。( )
【答案】×
【考纲知识点】循环语句(一级)
【解析】本题考察for循环语句;本题循环变量i枚举1、4、7、9,最后一次输出i的值为9。所以本题错误。

7.在C++, break 语句通常与if语句配合使用。( )
【答案】×
【考纲知识点】循环语句(一级)
【解析】本题主要考察break语句用法;break语句用于跳出循环或switch语句,通常与循环语句:for、while或者选择语句:switch配合使用。所以本题错误。

8.在C++代码中,不可以将变量命名为 five-star ,因为变量名中不可以出现 - (减号)符号。( )
【答案】
【考纲知识点】变量的定义与使用(一级)
【解析】本题考察变量的命名规则;变量命名时需要满足:首位字符不能是数字;变量名只能由大小写字母、数字和下划线(_)组成;变量名不能是C++中的关键字。所以本题正确。

9.在C++语言中,整型、实数型、字符型、布尔型是不同数据类型,但这四种类型的变量间都可以比较大小。 ( )
【答案】
【考纲知识点】变量的定义与使用(一级)
【解析】本题考察变量的数据类型的用法;在C++中整型、实数型、字符型、布尔型的变量比较最终转变为数值大小的比较,其中字符型转为对应的ACSII码,布尔型转变为0(false)和1(true)。所以本题正确。

10.C++中,定义变量 int a=5,b=4,c=3 ,则表达式 (a<b<c) 的值为逻辑假。 ( )
【答案】×
【考纲知识点】关系运算(一级)
【解析】本题考察关系运算和语句的执行顺序,表达式(a<b<c)的执行顺序可以写为((a<b)<c),先执行a<b,其值为false,然后执行false<c,其中false转为int类型的0,结果为true(逻辑真)。所以本题错误。

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

1.小杨购物

【问题描述】

小杨有n元钱用于购物。商品A的单价是a元,商品图片的单价是b元。小杨想购买相同数量 的商品A和商品B。 请你编写程序帮小杨计算出他最多能够购买多少个商品A和商品B。

【输入描述】

第一行包含一个正整数n,代表小杨用于购物的钱的金额。

第二行包含一个正整数a,代表商品A的单价。

第三行包含一个正整数b,代表商品B的单价。

【输出描述】

输出一行,包含一个整数,代表小杨最多能够购买的商品A和商品B的数量。

【样例输入 1】

12

1

2

【样例输出 1】

4

【样例输入 2】

13

1

2

【样例输出 2】

4

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

【解题思路】

购买的A、B商品数量相等,可以将它们打包来买,每买1件A与B商品花费为(a+b)元,所以最后计算n元能分出多少整数个(a+b)即可。

【参考程序】

【程序解析】数据范围均未超出int类型的最大值,变量n、a、b定义为int类型,C++中整除相除结果会舍去余数(或者为截断取整),最后结果直接输出n/(a+b)即为可购买的整数个商品数量

2.美丽数字


【问题描述】
小杨有n个正整数,他认为一个正整数是美丽数字当且仅当该正整数是9的倍数但不是8的倍数。 小杨想请你编写一个程序计算n个正整数中美丽数字的数量。
【输入描述】
第一行包含一个正整数n,代表正整数个数。
第二行包含n个正整数a1,a2,a3,...,an。
【输出描述】
输出一个整数,代表其中美丽数字的数量。
【样例输入 1】
3
1
9
72
【样例输出 1】
1

【考纲知识点】循环运算(一级)、关系运算(一级)
【解题思路】1个数x判断是否为美丽数字,需要同时满足x是9的倍数以及x不是8的倍数,即为x除以9的余数为0以及x除以8的余数不为0;会有n个数等待判断,将判断1个数的程序放入循环当中,并统计每次判断是美丽数的个数。
【参考程序】

【程序解析】

有n个数需要判断,使用循环语句执行n次循环,每次循环判断一个数x是否满足条件,写法为x % 9 == 0 && x % 8 != 0,使用ans统计个数。


点击全文阅读


本文链接:http://zhangshiyu.com/post/204968.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1