夜雨聆风学习资料网

ARTICLE · 1213340

2023年GESP09月认证C++三级试卷

2023年GESP09月认证C++三级试卷

跟老马一起“升级打怪”学编程!

旨在为小朋友们提供全面的学习材料,共同为等级考试做好准备。

添加小助手微信,回复【GESP 2023.09 C++三级】,获取本套试题答案。

2023年GESP09月认证C++三级试卷分数:100 题数:27

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

1、⼈们所使⽤的⼿机上安装的App通常指的是( )。

  • A. ⼀款操作系统
  • B. ⼀款应⽤软件
  • C. ⼀种通话设备
  • D. 以上都不对

2、下列流程图的输出结果是?( )

  • A. 60
  • B. 20
  • C. 5
  • D. 1

3、已知⼤写字符'A'的ASCII编码的⼗六进制表⽰为0x41 ,则字符'L'的ASCII编码的⼗六进制表⽰为?( )

  • A. 4A
  • B. 4B
  • C. 4C
  • D. 52

4、以下哪个不是C++语⾔中的运算符?( )

  • A. ~
  • B. ~~
  • C. <
  • D. <<

5、如果数组定义为long long array[] = {3, 5, 7, 2};,则数组array占⽤的字节数为?( )

  • A. 32
  • B. 16
  • C. 8
  • D. 4

6、⼀个数组定义为 double array[3];,则可合理访问这个数组的元素的下标最⼤为( )。

  • A. 2
  • B. 3
  • C. 23
  • D. 24

7、以下数组定义 ,符合C++语⾔语法的是( )。

  • A. double  a[];
  • B. double  b[]  =  {1,  2.0,  '3'};
  • C. double  c[3.0];
  • D. double[]  d  =  new  double[3];

8、下列关于进制的叙述 ,正确的是?( )

  • A. 只有⼗进制和⼆进制能够⽤来表⽰⼩数 ,⼋进制和⼗六进制不可以。
  • B. 常⽤的进制包括⼆进制、⼋进制、⼗进制、⼗六进制,其他进制在⽇常⽣活中很少使⽤。
  • C. 对任意正整数 ,其⼆进制表⽰不会⽐它的⼗进制表⽰更短。
  • D. 正整数的⼋进制表⽰中 ,每⼀位可能出现的最⼤数字是8。

9、下列关于C++语⾔中数组的叙述 ,不正确的是( )。

  • A. 可以定义0个元素的数组。
  • B. 不能定义-1个元素的数组。
  • C. 数组下标越界访问会产⽣编译错误。
  • D. 程序运⾏时发⽣数组下标的越界访问,程序依然可能正常结束。

10、如果 a是int类型的变量 ,下列哪个表达式的值⼀定为 true?( )

  • A. a  +  1000  -  1000  ==  a
  • B. a  *  2  /  2  ==  a
  • C. (a  &  1)  ==  1
  • D. (a  |  1)  ==  a  +  1

11、如果 a和b均为int类型的变量 ,下列表达式不能正确判断“ a等于b ”的是?( )。

  • A. ((a  >=  b)  &&  (a  <=  b))
  • B. ((a  >>  1)  ==  (b  >>  1))
  • C. ((a  +  b)  ==  (a  +  a))
  • D. ((a  ^  b)  ==  0)

12、如果 a为char类型的变量 ,下列哪个表达式可以正确判断“a是⼤写字母”?( )

  • A. a - 'A' <= 26
  • B. 'A' <= a <= 'Z'
  • C. 'A' <= 'a' <= 'Z'
  • D. ('A' <= a) && (a <= 'Z')

13、在下列代码的横线处填写( ) ,可以使得输出是"20 10"。

# include<iostream>usingnamespacestd;intmain(){int a = 10, b = 20;    a = (a << 8) | b;    __________ //在此处填入代码cout << a << " " << b << endl;return0;}
  • A. a  =  a  >>  8;  b  =  a  &  0xff;
  • B. b  =  a  >>  8;  a  =  a  &  0xff;
  • C. a  =  b;  b  =  a  &  0xff;
  • D. b  =  a;  a  =  b;

14、在下列代码的横线处填写( ) ,可以使得输出是“120”。

1# include<iostream>2  usingname space std;34  intmain(){5intarray[5] = { 1,2,3,4,5 };6int res = 0;7for (int i = 0; i < 5; i++)8          __________; //在此处填入代码9cout << res << endl;10return 0;11  }
  • A. res  +=  array[i]
  • B. res  *=  array[i]
  • C. res  =  array[i]
  • D. 以上均不对

15、下列代码的输出是( )。

1# include<iostream>2  using namespace std;34  intmain(){5int array[10];6for (int i = 0; i < 10; i++)7array[i] = i;8for (int p = 2; p < 10; p++)9if (array[p] == p)10for (int n = p; n < 10; n += p)11array[n] = array[n] / p * (p - 1);12int res = 0;13for (int n = 1; n < 10; n++)14          res += array[n];15cout << res << endl;16return 0;17  }
  • A. 15
  • B. 28
  • C. 45
  • D. 55

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

1、⼆进制数101.101在⼗进制下是5.005。

  • 正确();
  • 错误();

2、在C++语⾔中,位运算符也有类似“先乘除、后加减”的优先级规则。因此,使⽤时应注意合理使⽤括号。

  • 正确();
  • 错误();

3、字符常量'3'的值和int类型常量3的值是相同的,只是占⽤的字节数不同。

  • 正确();
  • 错误();

4、在C++语⾔中,长度为n的数组,访问下标为n的元素会引起编译错误。

  • 正确();
  • 错误();

5、在C++语⾔中,所有int类型的值,经过若⼲次左移操作(<<)后,它们的值总会变为0。

  • 正确();
  • 错误();

6、在C++语⾔中,数组下标的⼤⼩决定元素在逻辑上的先后顺序,与元素在内存中位置的先后顺序⽆关。

  • 正确();
  • 错误();

7、在C++语⾔中,定义数组时,[]中必须指定元素个数。

  • 正确();
  • 错误();

8、著名的哥德巴赫猜想:任⼀⼤于2的偶数都可写成两个素数之和。我们可以通过枚举法来证明它。

  • 正确();
  • 错误();

9、在C++语⾔中,表达式(0xff == 255) 的值为true。

  • 正确();
  • 错误();

10、如果 a 为int类型的变量,且表达式((a & 1) == 0)的值为true,则说明a是偶数。

  • 正确();
  • 错误();

三、编程题(共2题,共50分)

1、小杨的储蓄

【提交】

https://www.luogu.com.cn/problem/B3867

【问题描述】

小杨共有  个储蓄罐,编号从0到 。从第1天开始,小杨每天都会往存钱罐里存钱。具体来说,第  天他会挑选一个存钱罐 ,并存入  元钱。过了  天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?

【输入描述】

输入2行,第一行两个整数 ;第二行  个整数,其中第  个整数为 (保证 )。

每行的各个整数之间用单个空格分隔。

保证 ;

【输出描述】

输出  个用单个空格隔开的整数,其中第  个整数表示编号为  的存钱罐中有多少钱()。

【特别提示】

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

【样例输入1】

2 30 1 0

【样例输出1】

4 2

【样例解释1】

小杨在第1天、第2天、第3天分别向0号、1号、0号存钱罐存了1元钱、2元钱、3元钱,因此0号存钱罐有1+3=4元钱,而1号存钱罐有2元钱。

【样例输入2】

3 50 0 0 2 0

【样例输出2】

11 0 4

2、进制判断

【提交】

https://www.luogu.com.cn/problem/B3868

【问题描述】

 进制数指的是逢  进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五)。

现在有  个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如,15A6F 就只可能是十六进制,而 1011 则是四种进制皆有可能。

【输入描述】

输入的第一行为一个十进制表示的整数  。接下来  行,每行一个字符串,表示需要判断的数。保证所有字符串均由数字和大写字母组成,且不以 0 开头。保证不会出现空行。

保证  ,保证所有字符串长度不超过10。

【输出描述】

输出  行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用 1 表示可能,使用 0 表示不可能。

例如,对于只可能是十六进制数的 15A6F,就需要输出 0 0 0 1;而对于四者皆有可能的 1011 ,则需要输出 1 1 1 1。

【样例输入1】

215A6F1011

【样例输出1】

0 0 0 11 1 1 1

【样例输入2】

4123456712345678FFGG

【样例输出2】

0 1 1 10 0 1 10 0 0 10 0 0 0

青少年编程竞赛交流

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),添加小助手微信,让他邀请大家进入学习群。进群之后大家可以参与定期组织的21天刷题打卡、等级考试测评、教育部白名单比赛辅导以及青少年编程组队竞赛等活动。

相关学习资料