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

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

时间:2024-05-05 11:17 作者:admin 点击:
一、单选题(每题 2 分,共 30 分) 1. 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。 A. 编辑 B. 保存 C. 调试 D. 编译 【答案】D 【考纲知识点】编

一、单选题(每题 2 分,共 30 分)
1. 高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。
A. 编辑
B. 保存
C. 调试
D. 编译
【答案】D
【考纲知识点】编程环境(一级)
【解析】本题属于考察计算机基础知识中的编辑、编译、解释、调试的概念;其中编辑是编写修改代码,保存是将代码保存下来,调试是测试运行代码,而编译是将源程序翻译成可执行代码,所以本题正确答案为 D。

2. 二进制数 11.01 在十进制下是( )。
A. 3.01
B. 3.05
C. 3.125
D. 3.25
【答案】D
【考纲知识点】进制转换 (三级)
【解析】本题属于考察计算机基础知识中的进制与进制转换;二进制11.01 换算成 10 进制为 1∗ 2
1+1∗ 20+0 ∗(1/2) + 1 ∗(1/22) = 3.25。所以本题正确答案为D。

3. 已知大写字符'A'的 ASCII 编码的十六进制表示为 0x41,则字符'F'的ASCII 编码的十六进制表示为( )。
A. 46
B. 47
C. 48
D. 49
【答案】A
【考纲知识点】ASCII 编码 (二级)
【解析】本题属于考察计算机基础知识中的 ASCII 码;已知'A'的ASCII 编码十六进制表示为 0x41,则'F'的 ASCII 编码比'A'的 ASCII 编码大5,所以字符'F'的ASCII
编码十六进制表示为 46。所以本题正确答案为 A。

4. 以下哪个不是 C++语言中的运算符?( )
A. &
B. &&
C. *
D. **

【答案】D
【考纲知识点】基本运算(一级),位运算(三级)
【解析】本题属于考察计算机基础知识中的运算符,其中&、&&、*分别可以表示按位与、逻辑与和乘法,但**不是 C++语言中的运算符。本题正确答案为D。

5. 如果字符串定义为 char str[] = "Hello";,则字符数组str 的长度为()。

A. 0
B. 5
C. 6
D. 7
【答案】C
【考纲知识点】字符串(三级)
【解析】本题属于考察计算机基础知识中的字符串概念。数组初始化时[]内可省略数组长度,此时数组长度为初始值的长度。字符串"Hello"的长度为5,但是字符串最后需要额外保存一个'\0'符号作为结束位,所以字符数组str 的长度为6。所以本题正确答案为 C。

6. 一个数组定义为 double array[3];,则这个数组占用内存的大小为()。

A. 24
B. 12
C. 6
D. 3
【答案】A
【考纲知识点】计算机的存储(二级),一维数组(三级)【解析】本题属于考察计算机基础知识中的内存概念,double 类型的数据占用内存为 8 字节,array 数组共使用了 3 个 double 类型的数据,所以内存大小为24。所以本题正确答案为 A。

7. 以下数组定义,符合 C++语言语法的是( )。
A. int a[];
B. int b['3'];
C. int c[3.0];
D. int[3] d;
【答案】B
【考纲知识点】一维数组(三级)
【解析】本题属于考察计算机基础知识中的数组概念,在C++中每个字符都有对应的 ASCII 编码,当需要使用整数类型的值时,可以将字符通过对应的ASCII 编码转换为整数,所以 int b[’3’];等价于 int b[51];。所以本题正确答案为B。

8. 下列关于进制的叙述,不正确的是( )。
A. 正整数的二进制表示中只会出现 0 和 1。
B. 10 不是 2 的整数次幂,所以十进制数无法转换为二进制数。
C. 从二进制转换为 8 进制时,可以很方便地由低到高将每3 位二进制位转换为对应的一位 8 进制位。
D. 从二进制转换为 16 进制时,可以很方便地由低到高将每4 位二进制位转换为对应的一位 16 进制位。
【答案】B
【考纲知识点】进制转换(三级)
【解析】本题属于考察计算机基础知识中的进制与进制转换概念,任意数字都可以在不同的进制之间转换,所以本题正确答案为 B。

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

A. 数组必须先定义后使用。
B. 数组的所有元素在内存中是连续存放的。
C. 除了字符数组,在定义数组时“[]”内必须有常数。
D. 不能对数组赋值,但可以对数组的每个基础类型的元素赋值。

【答案】C
【考纲知识点】一维数组(三级)
【解析】本题属于考察计算机基础知识中的数组概念,任意类型的数组,只要有初始化,在数组定义时就可以省略[]内的常数。所以本题正确答案为C。

10. 一个 int 类型的值,做以下哪个操作,一定会变回原来的值?()

A. 左移 3 位,再右移 3 位。
B. 右移 3 位,再左移 3 位。
C. 按位或 7,再按位与-8。
D. 按位异或 7,再按位异或 7。
【答案】D
【考纲知识点】位运算(三级)
【解析】本题属于考察计算机基础知识中的位运算相关概念,A 选项可能存在越界的问题,B 选项会将低位的 3 位清零,C 选项肯定是错的,D 选项异或两次7等同于原数,所以本题正确答案为 D。

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

A. ((a / b) == 1)
B. ((a & b) == a)
C. ((a ^ b) == 0)
D. ((a | b) == b)
【答案】C
【考纲知识点】位运算(三级)
【解析】本题属于考察计算机基础知识中的位运算相关概念。选项 A,例如 a 为 5,b 为 3,则 a/b 结果为 1,但 a 并不等于b;选项 B,例如 a 为 5,b 为 15,则 a&b 结果为 5,但 a 并不等于b;选项 C,(a ^ b) == 0 说明 a 和 b 的二进制位上的每一位都相等,等价于“a 等于b”;选项 D,例如 a 为 5,b 为 15,则 a|b 结果为 15,但 a 并不等于b;所以本题正确答案为 C。

12. 如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“小于等于a且是 4 的倍数”的整数中最大的?( )
A. (a & (~3))
B. ((a << 2) >> 2)
C. (a ^ 3)
D. ((a - 1) | 3) + 1
【答案】A
【考纲知识点】位运算(三级)
【解析】本题属于考察计算机基础知识中的位运算相关概念,a&一个数得到的必然是小于等于 a 的数,同时题目要求是 4 的倍数,也就是最后两位要等于0,(~3)正好是除了最后两位是 0,其余全是 1,满足要求,所以本题正确答案为A。

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

#include<iostream>
using namespace std;
int main(){	 
	int a = 12,b = 24;
	_________; //在此处填写代码
	a = a ^ b;
	b = a ^ b;
	cout<< a << " " << b << endl; 
	return 0;
}

A. a = a ^ b
B. b = a ^ b
C. a = a + b
D. b = a + b
【答案】B
【考纲知识点】位运算(三级)
【解析】本题属于考察计算机基础知识中的位运算相关概念,因为异或运算中a^a=0;a^0=a,当选项为 B 时,第 5 行 b'=(a^b),第 6 行a'=a^b'=a^(a^b)=b,第7行 b"=a^b'=b^(a^b)=a,正好对 a、b 进行了交换。所以本题正确答案为B。

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

#include<iostream>
using namespace std;
int main(){	 
	int array[5] = {3, 7, 5, 2, 4};
	int min = 0;
	for(int i = 0; i < 5; i++)
		if(______)
			min = array[i];
	cout<< min << endl; 
	return 0;
}

A. min > array[i]
B. min < array[i]
C. min = array[i]
D. 以上均不对。
【答案】D
【考纲知识点】循环结构(一级),一维数组(三级)
【解析】本题属于考察计算机基础知识中的数组相关概念,从结果输出2 以及变量名字 min 上可以看出,题目本身想求一个最小值,但是初始化为min=0,所以选项 ABC 的最终结果都不会等于 2,所以本题正确答案为D。

15. 在下列代码的横线处填写( ),可以使得输出不是“31”。

#include<iostream>
using namespace std;
int main(){	 
	int array[5] = {1, 2, 4, 8, 16};
	int res = 0;
	for(int i = 0; i < 5; i++)
		______; //在此处填写代码
	cout<< res << endl; 
	return 0;
}

A. res = res + array[i]
B. res = res & array[i]
C. res = res | array[i]
D. res = res ^ array[i]
【答案】B
【考纲知识点】位运算(三级)
【解析】本题属于考察计算机基础知识中的数组和位运算相关概念,结果输出31 的二进制位是 11111,而数组中的 5 个数的二进制分别是1、10、100、1000和 10000,所以选项 A、C、D 都会输出 31,只有 B 选项会输出0,所以本题正确答案为 B。

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