欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

2023年 9月 GESP C++ 三级真题解析 选择题

时间:2024-05-05 15:07 作者:admin 点击:
一、单选题(每题 2 分,共 30 分) 1、⼈们所使用的手机上安装的App通常指的是( )。 A.⼀款操作系统 B.⼀款应用软件 C.⼀种通话设备 D.以上都不对 【答案】B 【考纲知识点】 计算机

一、单选题(每题 2 分,共 30 分)
1、⼈们所使用的手机上安装的App通常指的是( )。

A.⼀款操作系统
B.⼀款应用软件
C.⼀种通话设备
D.以上都不对
【答案】B
【考纲知识点】 计算机基础知识
【解析】本题属于考察计算机基础知识。APP是英语单词application的简写,代表应用软件的意思。

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


A. 60
B. 20
C. 5
D. 1
【答案】B
【考纲知识点】 流程图的概念与描述
【解析】本题属于考察计算机流程图知识,只要满足条件,就执行“是”后面的语句,是个循环结构。a=5和4的时候执行s=sa,结果是5*4=20。

3、已知⼤写字符'A'的ASCII编码的⼗六进制表⽰为0x41 ,则字符'L'的ASCII编码的⼗六进制表⽰为 ( ) 。
A. 4A
B. 4B
C. 4C
D. 52
【答案】C
【考纲知识点】 计算机字符编码知识
【解析】本题属于考察计算机字符编码知识。‘A’的ASCII值是65,可以推出‘L’是76,将其转换成二进制,答案是C。

4、 以下哪个不是C++语⾔中的运算符?( )
A. ~
B. ~~
C. <
D. <<
【答案】B
【考纲知识点】C++语言基础
【解析】本题属于考察C++语言基础知识。B运算符不存在。

5、如果数组定义为long long array[] = {3, 5, 7, 2};,则数组array占⽤的字节数为( )。
A. 32
B. 16
C. 8
D. 4
【答案】A
【考纲知识点】 数组和数据类型
【解析】本题属于考察C ++语言知识,包括数组和数据类型。一维数组中有4个元素,long long类型每个数字占8个字节,4*8=32。选A。

6、 ⼀个数组定义为 double array[3]; ,则可合理访问这个数组的元素的下标最⼤为( )。
A. 2
B. 3
C. 23
D. 24
【答案】A
【考纲知识点】 数组知识
【解析】本题属于考察C ++语言数组知识,数组下标从0开始,3个元素的下标分别是0/1/2.选A。

7、 以下数组定义 ,符合C++语⾔语法的是( )。
A. double a[];
B. double b[] = {1, 2 .0, '3'};
C. double c[3.0];
D. double[] d = new double[3];
【答案】B
【考纲知识点】 数组知识
【解析】本题属于考察C ++语言的数组知识,A的写法需要明确数组大小;C中数组大小必须是整数;D需要用指针类型指向一个new的数组。选B。

8、 下列关于进制的叙述 ,正确的是( )。
A.只有十进制和二进制能够⽤来表示⼩数 ,八进制和十六进制不可以。
B.常用的进制包括二进制、八进制、⼗进制、十六进制,其他进制在日常⽣活中很少使用。
C.对任意正整数 ,其二进制表示不会⽐它的⼗进制表示更短。
D.正整数的八进制表⽰中 ,每⼀位可能出现的最大数字是8。
【答案】C
【考纲知识点】 进制知识
【解析】本题属于考察C ++语言的进制知识,日常生活中,十进制最常用;A中进制都可以表示小数;D中数字8不能出现,选C。

9、下列关于C++语⾔中数组的叙述 ,不正确的是( )。
A.可以定义 0 个元素的数组。
B.不能定义-1 个元素的数组。
C.数组下标越界访问会产⽣编译错误。
D.程序运⾏时发⽣数组下标的越界访问 ,程序依然可能正常结束。

【答案】C
【考纲知识点】 数组知识
【解析】本题属于考察C ++语言的数组知识,选择不正确的,在不同编译器下,数组越界不一定会产生编译错误,选C。

10、 如果 a是int类型的变量 ,下列哪个表达式的值⼀定为true?( )
A. a + 1000 - 1000 == a
B. a * 2 / 2 == a
C. (a & 1) == 1
D. (a | 1) == a + 1
【答案】A
【考纲知识点】 表达式及位运算
【解析】本题属于考察C ++语言的计算表达式和位运算知识,A选项中,先计算a+1000-1000=a,a==a成立;B中a如果导致a*2越界就不成立;C中a是偶数,和1做与位运算结果是0;D中a是奇数的时候,和1做或运算不等于a+1,选A。

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)
【答案】B
【考纲知识点】 表达式
【解析】本题属于考察C ++语言的表达式知识,注意是找不能正确判断的条件,B选项中,例如a=4,b=5,(a>>1)是等于(b>>1)的,因此选B。

12、 如果 a为char类型的变量 ,下列哪个表达式可以正确判断“a是⼤写字母”?( )
A. a - 'A' <= 26
B. 'A' <= a <= 'Z'
C. 'A' <= 'a' <= 'Z'
D. ('A' <= a) && (a <= 'Z')
【答案】D
【考纲知识点】 字符知识
【解析】本题属于考察C ++语言的字符知识,大写字符是从‘A’到‘Z’,在这个区间内,就是大写字符。注意B选项,如果a=‘b’,根据ASCII码,’A’<=a成立,返回值是1,1<=’Z’,所以B选项不正确,通过判断,选D。

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

#include<iostream>
using namespace std;
int main(){	 
	
int a = 10, b = 20;
	a = (a << 8) | b;
	________________//此处填写代码
	cout << a << " " << b << endl;

	return 0;
}

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;
【答案】B
【考纲知识点】 基本运算
【解析】本题属于考察C ++语言的运算知识,程序的目的是实现a和b的数据交换,用a的低8位保留b的值,原来的数值保存在a的高八位,因此b=a>>8即得到a原来的值。将a的高8位清空,与0xff做与运算即可,0xff的高八位是0,得到b之前的结果,选B。

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

#include<iostream>
using namespace std;
int main(){	 

	int array[5] = {1, 2, 3, 4, 5};
	int res = 0;
	for (int i = 0; i < 5; i++)
		__________;//此处填写代码
	cout << res << endl;
	return 0;
}

A. res += array[i];
B. res *= array[i]
C. res = array[i]
D. 以上均不对。
【答案】D
【考纲知识点】 循环语句,复合赋值运算符
【解析】本题属于考察C ++语言的for循环语句和复合赋值运算符知识,简单将选项A、B、C代入到代码段,都不能达到预期结果。所以前3个选项都不正确,通过判断,选D。

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

#include<iostream>
using namespace std;
int main(){	 

	int array[10];
	for (int i = 0; i < 10; i++)
		array[i] = i;
	for (int p = 2; p < 10; p++)
		if(array[p] == p)
			for (int n = p; n < 10; n += p)
				array[n] = array[n] / p * (p - 1);
	int res = 0;
	for (int n = 1; n < 10; n++)
		res += array[n];
	cout << res << endl;
	return 0;
}

A. 15
B. 28
C. 45
D. 55
【答案】B
【考纲知识点】 多层循环结构,数组
【解析】本题属于考察C ++语言的数组知识,array数组赋值分别是0到9,然后注意里面的双重循环。p是从2到9,对array数组重新赋值。例如,p=2时,array[2]=2,条件成立,进入第2重循环,n的范围是2到9,注意步长是2,对每个数组元素重新赋值,数组重新变为0 1 1 3 2 5 3 7 4 9。一直到循环完成,累加array数组,结果是B。

(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%