#YHCSPJ0012. CSP-J模拟卷12
CSP-J模拟卷12
选择题
- (2分)中国计算机学会于( )年创办全国青少年计算机程序设计竞赛。{{ select(1) }}
- 1983
- 1984
- 1985
- 1986
- (2分)一个32位整型变量占用( )个字节。{{ select(2) }}
- 4
- 8
- 32
- 128
- (2分)下列不同进制数中与其他三项不等的是( )。{{ select(3) }}
- (269)₁₆
- (617)₁₀
- (1151)₈
- (1001101011)₂
- (2分)深度为h的满k叉树(k>1)的结点总数为( )。{{ select(4) }}
- (k^(h+1)-1)/(k-1)
- k^(h-1)
- k^h
- (k^h-1)/(k-1)
- (2分)与程序段
s = a; for(b=1; b<=c; b++) s=s+1;
等价的赋值语句是( )。{{ select(5) }}
- s = a + b
- s = a + c
- s = s + c
- s = b + c
- (2分)2048×1024像素的32位真彩色图像存储空间为( )。{{ select(6) }}
- 16MB
- 4MB
- 8MB
- 2MB
- (2分)无向图G有16条边且每个顶点度数为2,G的顶点数为( )。{{ select(7) }}
- 10
- 12
- 8
- 16
- (2分)程序计算
s=1+1/2+1/3+…+1/10
时错误的行是( )。
s = 1.0;
for(n=10; n>1; n--)
s = s + 1/n;
{{ select(8) }}
- s=1.0;
- for循环
- s=s+1/n;
- 输出语句
- (2分)8位二进制补码10101011对应的十进制数是( )。{{ select(9) }}
- 43
- -85
- -43
- -84
- (2分)5副手套取6只恰好配成2副的取法有( )种。{{ select(10) }}
- 120
- 180
- 150
- 30
- (2分)根高度为1、61个结点的完全二叉树高度为( )。{{ select(11) }}
- 5
- 6
- 7
- 8
- (2分)错误的IP地址是( )。{{ select(12) }}
- 162.105.135.27
- 192.168.0.1
- 256.256.129.1
- 10.0.0.1
- (2分)寄存器是( )的重要组成部分。{{ select(13) }}
- 硬盘
- 高速缓存
- 内存
- CPU
- (2分)与电子邮件无关的协议是( )。{{ select(14) }}
- POP3
- SMTP
- WTO
- IMAP
- (2分)三道菜洗菜、切菜、炒菜各10分钟,最短耗时( )分钟。{{ select(15) }}
- 90
- 60
- 50
- 40
阅读理解1(12分)
#include <cstdlib>
#include <iostream>
using namespace std;
char encoder[26] = {'C','S','P',0};
char decoder[26];
string st;
int main() {
int k = 0;
for (int i = 0; i < 26; ++i)
if (encoder[i] != 0) ++k;
for (char x = 'A'; x <= 'Z'; ++x) {
bool flag = true;
for (int i = 0; i < 26; ++i)
if (encoder[i] == x) {
flag = false;
break;
}
if (flag) {
encoder[k] = x;
++k;
}
}
for (int i = 0; i < 26; ++i)
decoder[encoder[i] - 'A'] = i + 'A';
cin >> st;
for (int i = 0; i < st.length(); ++i)
st[i] = decoder[st[i] - 'A'];
cout << st;
return 0;
}
第16题(1.5分)
输入非大写字母可能越界。(){{ select(16) }}
- 正确
- 错误
第17题(1.5分)
输入非空串与输出一定不同。(){{ select(17) }}
- 正确
- 错误
第18题(1.5分)
第12行i<26改为i<3,结果不变。(){{ select(18) }}
- 正确
- 错误
第19题(1.5分)
第26行i<26改为i<16,结果改变。(){{ select(19) }}
- 正确
- 错误
第20题(3分)
输出为"ABC ABC ABC A",输入含:{{ select(20) }}
- S和P
- S和B
- A和P
- A和B
第21题(3分)
输出为"CSPCSPCSPCSP",输入含:{{ select(21) }}
- P和K
- J和R
- J和K
- P和R
阅读理解2(14分)
#include <cstdio>
using namespace std;
int n;
int a[100];
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
scanf("%d", &a[i]);
int ans = 1;
for (int i = 1; i <= n; ++i) {
if (i > 1 && a[i] < a[i - 1])
ans = i;
while (ans < n && a[i] >= a[ans + 1])
++ans;
printf("%d\n", ans);
}
return 0;
}
第22题(1.5分)
第16行ans一定大于i。(){{ select(22) }}
- 正确
- 错误
第23题(1.5分)
输出ans≤n。(){{ select(23) }}
- 正确
- 错误
第24题(1.5分)
第12行<改为!=,结果不变。(){{ select(24) }}
- 正确
- 错误
第25题(1.5分)
ans-i>2时,a[i+1]≤a[i]。(){{ select(25) }}
- 正确
- 错误
第26题(3分)
输入严格递增数列,时间复杂度:{{ select(26) }}
- O(logn)
- O(n²)
- O(nlogn)
- O(n)
第27题(3分)
最坏时间复杂度:{{ select(27) }}
- O(n²)
- O(logn)
- O(n)
- O(nlogn)
阅读理解3(14分)
#include<iostream>
using namespace std;
const int V=100;
int n,m,ans,e[V][V];
bool visited[V];
void dfs(int x,int len) {
int i;
visited[x]=true;
if(len>ans) ans=len;
for(i=1;i<=n;i++)
if((!visited[i])&&(e[x][i]!=-1))
dfs(i,len+e[x][i]);
visited[x]=false;
}
int main() {
int i,j,a,b,c;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
e[i][j]=-1;
for(i=1;i<=m;i++) {
cin>>a>>b>>c;
e[a][b]=c;
e[b][a]=c;
}
for(i=1;i<=n;i++)
visited[i]=false;
ans=0;
for(i=1;i<=n;i++)
dfs(i,0);
cout<<ans<<endl;
return 0;
}
第28题(1.5分)
该程序用于求解无向图的最长路径。(){{ select(28) }}
- 正确
- 错误
第29题(1.5分)
有向环图可以正常输出结果。(){{ select(29) }}
- 正确
- 错误
第30题(3分)
输入4 2,1 2 1,3 4 1,输出:{{ select(30) }}
- 8
- 4
- 2
- 1
第31题(3分)
输入4 6,各边权1,输出:{{ select(31) }}
- 1
- 3
- 5
- 7
第32题(3分)
输入4 3,边为1-2(10)、2-3(20)、3-1(30),输出:{{ select(32) }}
- 30
- 60
- 90
- 120
第33题(3分)
输入4 6,边权10、20、30、40、50、60,输出:{{ select(33) }}
- 60
- 100
- 150
- 200
编程填空1(15分)
题目描述:最小区间覆盖
struct segment { int a, b; } A[MAXN];
void sort() {
for (int i = 0; i < n; i++)
for (int j = 1; j < n; j++)
if (①) {
segment t = A[j];
②;
}
}
int main() {
cin >> n >> m;
for (int i = 0; i < n; i++)
cin >> A[i].a >> A[i].b;
sort();
int p = 1;
for (int i = 1; i < n; i++)
if (③)
A[p++] = A[i];
n = p;
int ans = 0, r = 0;
int q = 0;
while (r < m) {
while (④)
q++;
⑤;
ans++;
}
cout << ans << endl;
return 0;
}
第34题(3分)①处应填(){{ select(34) }}
- A[j].b>A[j-1].b
- A[j].a<A[j-1].a
- A[j].a>A[j-1].a
- A[j].b<A[j-1].b
第35题(3分)②处应填(){{ select(35) }}
- A[j+1]=A[j];A[j]=t;
- A[j-1]=A[j];A[j]=t;
- A[j]=A[j+1];A[j+1]=t;
- A[j]=A[j-1];A[j-1]=t;
第36题(3分)③处应填(){{ select(36) }}
- A[i].b>A[p-1].b
- A[i].b<A[i-1].b
- A[i].b>A[i-1].b
- A[i].b<A[p-1].b
第37题(3分)④处应填(){{ select(37) }}
- q+1<n&&A[q+1].a<=r
- q+1<n&&A[q+1].b<=r
- q<n&&A[q].a<=r
- q<n&&A[q].b<=r
第38题(3分)⑤处应填(){{ select(38) }}
- r=max(r, A[q+1].b)
- r=max(r, A[q].b)
- r=max(r, A[q+1].a)
- q++
编程填空2(15分)
题目描述:最大子矩阵和
#include <iostream>
using namespace std;
const int SIZE = 100;
int matrix[SIZE+1][SIZE+1];
int rowsum[SIZE+1][SIZE+1];
int m, n, i, j, first, last, area, ans;
int main() {
cin >> m >> n;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
cin >> matrix[i][j];
ans = matrix ①;
for (i = 1; i <= m; i++)
②;
for (i = 1; i <= m; i++)
for (j = 1; j <= n; j++)
rowsum[i][j] = ③;
for (first = 1; first <= n; first++)
for (last = first; last <= n; last++) {
④;
for (i = 1; i <= m; i++) {
area += ⑤;
if (area > ans)
ans = area;
if (area < 0)
area = 0;
}
}
cout << ans << endl;
return 0;
}
第39题(3分)①处应填(){{ select(39) }}
- [1][1]
- [m][n]
- [1][n]
- [m][1]
第40题(3分)②处应填(){{ select(40) }}
- rowsum[i][0] = 0
- rowsum[0][i] = 0
- rowsum[i][n] = 0
- rowsum[n][i] = 0
第41题(3分)③处应填(){{ select(41) }}
- rowsum[i][j-1] + matrix[i][j]
- rowsum[i-1][j] + matrix[i][j]
- rowsum[i][j-1] - matrix[i][j]
- rowsum[i-1][j] - matrix[i][j]
第42题(3分)④处应填(){{ select(42) }}
- area = 1
- area = 0
- ans = 0
- ans = 1
第43题(3分)⑤处应填(){{ select(43) }}
- rowsum[i][last] - rowsum[i][first-1]
- rowsum[i][last] + rowsum[i][first-1]
- rowsum[last][i] - rowsum[first-1][i]
- rowsum[last][i] + rowsum[first-1][i]