A. CSP-J初赛模拟试题6
CSP-J初赛模拟试题6
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
单项选择题(共15题,每题2分,共计30分;每题有且仅有一个正确选项)
1.2024的因子与质因子分别有( )个。
{{ select(1) }}
- A.18和3
- B.16和3
- 15和3
- 16和4
2.使用邻接矩阵表示N个结点的有向图,所需要的存储空间为( )。
{{ select(2) }}
- A.Nx(N+1)
- B.N2
- C.Nx(N-1)
- D.Nx(N-1)/2
3在 C++程序中,表达式a%=b与下列哪个表达式是等价的?( ).
{{ select(3) }}
- A. a=%b
- B. a/=b
- C. a=b%a
- D. a=a%b
4.线性表若采用链表存储结构,则要求内存中可用存储单元地址( )
{{ select(4) }}
- A.必须连续
- B.必须不连续
- C.连续或不连续都行
- D.部分连续
我们输人一个新闻网站的网址便可访问该网站,其中用到的网络协议是( )。
{{ select(5) }}
- A. DNS
- B.FTP
- C.SSH
- D.TELNET
6.以下哪个不属于 STL 中栈的操作函数?( ).
{{ select(6) }}
- A.empty
- B.front
- C.push
- D.pop
7.平面上任取n个整点(横坐标和纵坐标都是整数),其中一定存在两个点,它中点也是整点,那么n至少是()。
{{ select(7) }}
- A.4
- B.5
- C.6
- D.7
8.以下哪个操作属于位运算范畴?( )
{{ select(8) }}
- A.&&
- B.ll
- C.>>>
- D.^
9. 关于树这种数据结构,下面的说法中哪个是正确的?( )
{{ select(9) }}
- A.满二叉树的结点总数一定是奇数
- B.完全二叉树的结点总数一定是奇数
- C.树形结构只有双亲表示法和孩子表示法
- D.二叉树的遍历方法只有前序遍历法和后序遍历法
10.以下哪个选项不属于头文件cmath?( )
{{ select(10) }}
- A.find(iterator first, iterator last, int x)
- B.abs(int x)
- C.ceil(double x)
- D.pow(double x,double y)
11.在C++语言中,表达式5&4|3的值等于()。
{{ select(11) }}
- A.7
- B.5
- C.4
- D.3
12.定义变量doublen,如果下面的代码输入为1000,则输出最接近( ).
{{ select(12) }}
- A.0
- B.-5
- C.-7
- D.7
13.在图的广度优先搜索中,要维护一个标识数组表示已经访问过的图的结点,需( )数据结构存放结点以实现遍历。
{{ select(13) }}
- A. 栈
- B.队列
- C.哈希表
- D.堆
14.从一个6x6的棋盘(不可旋转)中选取不在同一行也不在同一列的两个方格,共( )种方法。
{{ select(14) }}
- A.480
- B.450
- C.360
- D.720
15.下列关于集合的说法哪个不正确?( )
{{ select(15) }}
- A.一个元素是否属于一个集合是确定的
- B.集合中的元素两两不同
- C.0属于空集
- D.集合中的元素不存在先后次序
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,镨误填x;除特殊说明外,判断题每题15分,选择题每题3分,共计40分)
(1)
判断题
16.若去掉第6行,程序的输出结果不受任何影响。( )
{{ select(16) }}
- 正确
- 不正确
17.若去掉第8行,程序的输出结果中的数字总数不变。( )
{{ select(17) }}
- 正确
- 不正确
18.程序的输出结果是一个从小到大排列的整数序列。
{{ select(18) }}
- 正确
- 不正确
19.将第10行中的s.size()替换成s.length(),程序的运行结果不会改变。( )
{{ select(19) }}
- 正确
- 不正确
选择题
20.将第13行s.insert(k)替换成 for(int i=1;i<=6;i++)s.insert(i),则输出
选择题 为()。
{{ select(20) }}
- A.1 2 3 4 5 6
- B.6 5 4 3 2 1
- C.1 2 3 6 5 4
- D.1~6 随机分布值
21.将第13行s.insert(k)替换成for(int i=1;i<=7;i++)s.insert(i),第20行替换为 int x=i+1,第21行替换为int y=i,则输出为()。
{{ select(21) }}
- A.1 2 3 4 5 6
- B.6 5 4 3 2 1
- C.2 3 4 5 6 7 1
- D.2 3 4 5 6 7
(2)
注:输入为8位数字。
判断题
22.将第3行中的-1改为0,程序的运行不受任何影响。( )
{{ select(22) }}
- 正确
- 不正确
23.去掉第15行中的&&s[1]==s[4]&&s[1]==s[6],程序的输出不变。 ( )
{{ select(23) }}
- 正确
- 不正确
24.将第23行m=date/100%100替换为 m=date%10000/100,程序的输出不变。( )
{{ select(24) }}
- 正确
- 不正确
25.将第30行改为int j;if(i==y&&j==1||i!=y&&j==0)j=m
,程序的输出不变。( )
{{ select(25) }}
- 正确
- 不正确
选择题
26.若输人20240204,则输出为( )
{{ select(26) }}
- A.20240204 20300302
- B.20300302 20400402
- C.20400402 21211212
- D.20300302 21211212
27.若输出20011002 20200202,则输入可能为( )
{{ select(27) }}
- A.20011002
- B.20001001
- C.20020101
- D.20020202
(3)
判断题
28.若将第5行 if(num<= 3)替换为 if(num < 3),程序的运行结果不会改变.( )
{{ select(28) }}
- 正确
- 不正确
29.若将第7行中的i< num替换为i*i<=num,程序的运行结果不会改变。( )
{{ select(29) }}
- 正确
- 不正确
30.本程序用到的 vector 属于 STL。( )
{{ select(30) }}
- 正确
- 不正确
31.若将MAXN=100替换为MAXN=70,程序的运行结果不会改变。( )
{{ select(31) }}
- 正确
- 不正确
选择题
32.运行本程序,输出结果为( )
{{ select(32) }}
- A.7
- B.8
- C.9
- D.10
33.若将MAXN=100改为MAXN=2024,程序的输出结果为( )
{{ select(33) }}
- A.9
- B.10
- C.11
- D.12
34.(4分)若将MAXN=100改为MAXN=20244202,程序的输出结果为( )。
{{ select(34) }}
- A.11
- B.10
- C.9
- D.大于11的整数
三、完善程序(单选题,每小题3分,共计30分)
(1)在图像编码的算法中,需要对一个给定的方形矩阵进行Z字形扫描。给定一个的矩阵,Z字形扫描的过程如下图所示。
对 4x4 的矩阵
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
进行乙字形扫描后得到长度为16的序列:
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
请实现一个Z字形扫描的程序。给定一个nxn 的矩阵,输出对这个矩阵进行Z扫描的结果。
输入格式:
输人的第1行包含一个整数,表示矩阵的大小。输人的第2行到第 H1行包含n个正整数,由空格分隔,表示给定的矩阵。
输出格式:
输出一行,包含 nxn个整数,由空格分隔,表示输人的矩阵经过Z字形扫描后的结果。
输入样例:
4
1 5 3 9
3 7 5 6
9 4 6 4
7 3 1 3
输出样例:
1 5 3 9 7 3 9 5 4 7 3 6 6 4 1 3
评测用例规模与约定:
1≤n≤500,矩阵元素为不超过1000的正整数。
35.①处应填()。
{{ select(35) }}
- A.p[0][0]
- B.p[0][1]
- C.p[1][0]
- D.p[1][1]
36.②处应填()。
{{ select(36) }}
- A.v[0][0]=1
- B.v[1][1]=1
- C.v[0][1]=1
- D.v[1][0]=1
37.③处应填()。
{{ select(37) }}
- A.t < n*n
- B.t <= n*n
- C.t < n
- D.t <= n
38.④处应填()。
{{ select(38) }}
- A.v[x+1][y-1]
- B.v[x-1][y+1]
- C.!v[x+1][y-1]
- D.!v[x-1][y+1]
39.⑤处应填()。
{{ select(39) }}
- A.v[x-1][y-1]= 1
- B.v[x+1][y+1]= 1
- C.v[x+1][y-1]= 1
- D.v[x-1][y+1]= 1
(2)你有一架天平和N个砝码,这N个砝码的重量依次是:W1,W2,…,WN。请计算:共可以称出多少种不同的重量?注意砝码可以放在天平两边。
输入格式:
输入的第1行包含一个整数N。第2行包含 N个整数:W1,W2,…,WN。
输出格式:
输出一个整数代表答案。
输入样例:
3 1 4 6
输出样例:
10
样例说明:
能称出的10种重量是1、2、3、4、5、6、7、9、10、11。 1=1 2-6-4(天平一边放6,另一边放4) 3=4-1 4=4 5-6-1 6=6 7=1+6 9-4+6-1 10-4+6 11=1+4+6
评测用例规模与约定:
对于 50%的评测用例,1≤N≤15; 对于所有评测用例,1≤N≤100,N个砝码的总重量不超过105。
40.①处应填( )。
{{ select(40) }}
- A.sum += a[i]
- B.sum += a[1]
- C.sum += a[n]
- D.sum = a[i]
41.②处应填( )。
{{ select(41) }}
- A.j= f[i][j]
- B.j= sum-1
- C.j = n
- D.j= sum
42.③处应填( )。
{{ select(42) }}
- A.f[i-1][j-a[i]]
- B.f[i-1][abs(j-a[i])]
- C.f[i][abs[j-a[i])]
- D.f[i-1][a[i]-j]
43.④处应填( )。
{{ select(43) }}
- A.j + a[i]< sum
- B.j + a[i]<= sum
- C.j+ a[i-1]< sum
- D.j+ a[i-1]<= sum
44.⑤处应填( )
{{ select(44) }}
- A.ans += f[n][i-1]
- B.ans += f[n-1][i-1]
- C.ans += f[n][i] -D.ans += f[n-1][i]