一、单选题(每题 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) |