一 、 单项选择 ( 共 15 题,每题 2分,共计 30 分,每题有且仅有一个正确选项 )
1. 计算机的核心部件是什么( )?
A. 显示器 B. 键盘 C. 中央处理器( CPU) D. 鼠标
2. 将十进制小数 9.375 转换为二进制小数,其正确的二进制表示是( )。
A. 1001.11 B. 1011.11 C.1001.011 D. 1011.011
3. 假设有一个内存显示为 96MB 的文件夹,里面存储的都是分辨率为 1024 ×2048 的
24 位图像,请问理论上存储了( )张图像? (不考虑图像技术压缩对内存的优化 )
A. 16 张 B. 20 张 C. 8张 D. 32 张
4. 有六个小朋友并排站一列 ,其中三个小朋友是三胞胎 ,如果要求这三个三胞胎必须相邻 ,
则有( )种不同排列方法?
A. 72 B. 48 C. 144 D. 218
5. 在 C++ 中,关于函数参数传递的说法,哪一个是正确的 ( ) ?
A. C++ 只支持值传递。
B. C++ 只支持引用传递。
C. C++ 既支持值传递也支持引用传递。
D. C++ 只支持指针传递。
6. 对于一个 8位二进制整数,如果其原码是 10000011 ,则其补码是( )。
A. 01111100
B. 01111101
C. 11111100
D. 11111101
7. 用简单插入排序方法对下面四个序列进行排序 ( 由小到大 ),元素比较次数最少的是 ( )。
A. 93, 32, 95, 13, 23, 15, 88, 37
B. 62, 88, 37, 29, 39, 34, 72, 24
C. 86, 76, 68, 26, 53, 12, 35, 59
D. 21, 33, 47, 40, 80, 68, 90, 99
8. 在 C++ 的 STL 中 ,如果你需要频繁地在序列的任意位置插入和删除元素 ,以下哪个容器
将是最合适的选择 ( ) ?
A. std::vector
B. std::queue
C. std::stack
D. std::list
9. 已知一棵二叉树的前序遍历结果为 ABCDEF ,中序遍历结果为 CBAEDF ,则后序遍历的结果
为( )。
A. CBEFDA
B. FEDCBA
C. CBEDFA
D. EDCBFA
10. C++ 中用于表示枚举类型的关键字是 ( )。
A. struct
B. union
C. enum
D. static
11. 有以下代码段:
int a[3] = {1, 3, 5};
int *p = &a[0];
int *q = p + 2;
cout << *(p+1) << “ ” << *q ;
执行改代码输出的结果为( )。
A. 2 3
B. 2 4
C. 3 4
D. 3 5
12. 根据下面的流程图计算,若一开始输入的 m与 n的值分别为 10710 和 8208 ,则最后的
输出是( )。
A. 8
B. 18
C. 90
D. 306
13. 班级组织大家参加信息学比赛 ,现在要从班里选出 3人组成一队进行报名 ,要求每个参
赛队伍至少需要有一位女同学 。 已知班级里一共有 15 个男生 , 9个女生 , 则一共有 ( ) 种
可能的组合。
A. 1569
B. 2024
C. 1940
D. 1485
14. 一家电信公司提供了多种流量套餐供用户选择 ,每种套餐有不同的流量上限和价格 ,并
可以重复购买 。用户可以根据自己的需求购买套餐 ,超出套餐的流量将按照更高的单价计费 。
假设有以下套餐和超出套餐的流量单价:
套餐 A: 2GB 流量,价格 3元
套餐 B: 5GB 流量,价格 7元
套餐 C: 10GB 流量,价格 13 元
超出套餐流量单价: 2元 /GB
现有用户预计需要使用 128 GB 的流量, 则该 用户 最少需要付费( )元 ?
A. 169
B. 168
C. 167
D. 166
15. 向一个栈顶指针为 h的带头结点的链栈中插入指针 p所指的结点,应执行( )。
A. h->next = p;
B. p->next = h;
C. p->next = h; p->next = p;
D. p->next = h->next; h->next = p;
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填 √ ,错误填 × ;
除特殊说明外,判断题 1.5 分,选择题 3分,共计 40 分)
第一题
1 #include<iostream>
2 using namespace std;
3 int x,y,n,m;
4 int a[1000];
5 string num="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
6 void change(int i,int j){
7 a[i]^=a[j];
8 a[j]^=a[i];
9 a[i]^=a[j];
10 }
11 int main (){
12 cin >> x >> y;
13 m=(1<<y)-1;
14 while(x!=0){
15 n++;
16 a[n]=(x&m);
17 x=(x>>y);
18 }
19 for(int i=1;i<=n/2;i++){
20 change(i,n-i+1);
21 }
22 for(int i=1;i<=n;i++){
23 cout << num[a[i]];
24 }
25 return 0;
26 }
判断题
16. 将第 4行接在第 10 行之后,程序会出现编译错误。 ( )
17. 输入的 y绝对值在 1000 以内,程序都能正确运行。 ( )
18. 将程序第 20行换成 change(n-i+1, i); 不会影响程序结果。 ( )
19. 输入 37 1 输出结果长度大于 5。 (2 分 ) ( )
选择题
20. 输入 37 3,输出的结果为 ( )
A.45 B.54 C.0100101 D.1010010
21. 输入 335 4,输出的结果为 ( )
A.14H B.EH C.14F D.1415
第二题
1 #include<iostream>
2 using namespace std;
3 int n,m,Max;
4 int a[1000][1000];
5 int Minn(int x,int y,int z){
6 int res=x;
7 if(res>y) res=y;
8 if(res>z) res=z;
9 return res;
10 }
11 int Square(int x,int y){
12 if(x==1) return a[x][y];
13 if(y==1) return a[x][y];
14 int res=a[x][y]+Minn(Square(x-1,y),Square(x,y-1),Square(x-1,y-1));
15 Max=max(Max,res);
16 if(
2024北京中小学信息学能力测评活动(BCSP-X 2024)小高组基础知识题目