#C1214. CSP-J 初赛模拟题3
CSP-J 初赛模拟题3
一、单项选择题
(共 15 题,每题 2 分,共计 30 分;每题有且仅有一个正确选项)
【第 1 题】
cout << 011 + 11; 的计算结果是( )。 {{ select(1) }}
- 6
- 14
- 20
- 22
【第 2 题】
如果 256 种颜色用二进制编码来表示,至少需要( )位。 {{ select(2) }}
- 6
- 7
- 8
- 9
【第 3 题】
在程序中用到的一个常数 2e-3 在内存中占( )空间。
{{ select(3) }}
- 2B
- 4B
- 6B
- 8B
【第 4 题】
char('A'+' '),当大写字母 'A' 的 ASCII 码和空格的 ASCII 码之和的结果是小写字母 'a' 的 ASCII 码,请问空格的 ASCII 码是( )。
{{ select(4) }}
- 32
- 33
- 34
- 35
【第 5 题】
二进制数 00101100 和 00010101 的和( )。 {{ select(5) }}
- 00101000
- 01000100
- 01000001
- 00111000
【第 6 题】
以下是 32 位机器和 64 位机器的区别是( )。 {{ select(6) }}
- 显示器不同
- 寻址空间不同
- 硬盘大小不同
- 输入法不同
【第 7 题】
以下关于字符串的判定语句中正确的是( )。 {{ select(7) }}
- 串的长度必须大于零
- 字符串不可以用数组来表示
- 字符串是一种特殊的线性表
- 空格字符组成的串就是空串
【第 8 题】
若有如下程序段,其中 s,a,b,c 均已定义为整型变量,且 a,c 均已赋值 (c 大于 0)。
s = a;
for (b = 1;b <= c; b++ )
s = s + 1;
以下选项中和上述代码等价的是( )。
{{ select(8) }}
- s = a + c;
- s = a + b;
- s = s + c;
- s = b + c;
【第 9 题】
有以下程序:
#include <iostream>
using namespace std;
int main()
{
int k = 4, n = 0;
while (n < k)
{
n++;
if (n % 3 != 0)
continue;
k--;
}
cout << k << "," << n << endl;
return 0;
}
程序运行后输出的结果是( )。
{{ select(9) }}
- 2,2
- 2,3
- 3,2
- 3,3
【第 10 题】
给定含有 n 个不同的数的数组 。如果 L 中存在 使得 ,则称 L 是单峰的,并称 是 L 的“峰顶”。现在已知 L 是单峰的,请把 a-c 三行代码补全到算法中使得算法 正确找到 L 的峰顶。
a. Search(k+1, n) b. Search(1, k-1) c. return L[k]
Search(1, n)
1. k←⌊n/2⌋
2. if L[k] > L[k-1] and L[k] > L[k+1]
3. then __________
4. else if L[k] > L[k-1] and L[k] < L[k+1]
5. then __________
6. else __________
正确的填空顺序是( )。
{{ select(10) }}
- c,a,b
- c,b,a
- a,b,c
- b,a,c
【第 11 题】
100 以内质数个数为( )。 {{ select(11) }}
- 22
- 23
- 24
- 25
【第 12 题】
有 7 个一模一样的苹果,放到 3 个一样的盘子中,一共有( )种放法。 {{ select(12) }}
- 7
- 8
- 21
【第 13 题】
下列说法正确的是( )。 {{ select(13) }}
- CPU 的主要任务是执行数据运算和程序控制
- 存储器具有记忆能力,其中信息任何时候都不会丢失
- 两个显示器屏幕尺寸相同,则它们的分辨率必定相同
- 个人用户只能使用 Wifi 的方式连接到 Internet
【第 14 题】
FTP 可以用于( )。 {{ select(14) }}
- 远程传输文件
- 发送电子邮件
- 浏览网页
- 网上聊天
【第 15 题】
下列选项中不属于视频文件格式的是( )。 {{ select(15) }}
- TXT
- AVI
- MOV
- RMVB
二、阅读程序
(程序输入不超过数组或字符串定义的范围;判断题正确填 √,错误填 ⨉ ;除特殊说明外,判断题 1.5 分,选择题 3 分,共计 40 分)
阅读程序(一)
1. #include <iostream>
2. using namespace std;
3. typedef long long LL;
4. LL normalPower(LL base, LL power){
5. LL r = 1;
6. for(int i = 1; i <= power; i++){
7. r *= base;
8. r %= 1000;
9. }
10. return r % 1000;
11. }
12. int main(){
13. LL m, n;
14. while(true){
15. cin >> m >> n;
16. if(m == 0 && n == 0) break;
17. cout << normalPower(m, n) << endl;
18. }
19. return 0;
20. }
判断题
- 输出的结果每一行都为三位数。 {{ select(16) }}
- 正确
- 错误
- 将第 6 行的 <= 改为 < 输出结果不变。 {{ select(17) }}
- 正确
- 错误
- 将 14 行的 true 改为 -1,则输出结果不变。 {{ select(18) }}
- 正确
- 错误
单选题
- 如果输入 2 12,则输出结果为( )。 {{ select(19) }}
- 4
- 96
- 096
- 4096
- 该程序时间复杂度为( )。 {{ select(20) }}
阅读程序(二)
1. #include <iostream>
2. using namespace std;
3.
4. int select_arr(int arr[], int len, int arr_value){
5. while(1){
6. int left = 0;
7. int right = len - 1;
8. while(left <= right){
9. int mid = (left + right) / 2;
10. int mid_value = arr[mid];
11. if(mid_value == arr_value)
12. return mid;
13. else if(mid_value > arr_value)
14. right = mid - 1;
15. else if(mid_value < arr_value)
16. left = mid + 1;
17. }
18. return -1;
19. }
20. }
21.
22. int main(){
23. int arr[10] = {1, 3, 5, 7, 9, 10, 16, 46, 88, 91};
24. int pos = select_arr(arr, 10, 16);
25. cout << pos;
26. return 0;
27. }
判断题
21.数组 arr 的值可以为负数。 {{ select(21) }}
- 正确
- 错误
- 若 23 行代码为 int arr[10] = {1, 3, 7, 5, 9, 10, 16, 46, 88, 91}; 则输出结果没有变化。 {{ select(22) }}
- 正确
- 错误
- 数组数值越大,程序效率越低。 {{ select(23) }}
- 正确
- 错误
- 当数组数据量越大时,和顺序查找比较优势明显。 {{ select(24) }}
- 正确
- 错误
单选题
- 程序输出结果为( )。 {{ select(25) }}
- 4
- 5
- 6
- 7
- 该程序的算法为( )。 {{ select(26) }}
- 顺序查找
- 二分查找
- 哈希查找
- 分块查找
阅读程序(三)
1. #include <bits/stdc++.h>
2. using namespace std;
3.
4. int main() {
5.
6. string str;
7. char ch1, ch2;
8. getline(cin, str);
9. ch1 = ch2 = ' ';
10. for(int i = 0; i < str.size(); i++){
11. if(ch1 < str[i]){
12. ch2 = ch1;
13. ch1 = str[i];
14. }
15. else if(ch2 < str[i])
16. ch2 = str[i];
17. }
18.
19. if(isalpha(ch1))
20. ch1 ^= ' ';
21. if(isdigit(ch2))
22. ch2 = ch2 - '0' + 48;
23. cout << ch1 << ' ' << int(ch2);
24. return 0;
25. }
提示:空格 ASCII 码为 32。
判断题
-
若将第 8 行替换为 cin>>str; 则程序运行结果不会改变。
{{ select(27) }}
- 正确
- 错误
- 若输入的字符串只包含大写字母,则输出 int(ch2) 一定小于 91。 {{ select(28) }}
- 正确
- 错误
- 若将第 20 行替换为 ch1 ^= 32; 则程序运行结果不变。 {{ select(29) }}
- 正确
- 错误
- 若输入 55555,程序运行结果输出为 5 5。 {{ select(30) }}
- 正确
- 错误
单选题
- 当输入为 654321 时,程序的输出结果为( )。 {{ select(31) }}
- 6 5
- 6 53
- 1 2
- 6 1
- 若输入只有 3 个数字型字符,输出为 3 50,则输入一共有多少种不同方案?( )。 {{ select(32) }}
- 15
- 24
- 8
- 32
三、完善程序
(单选题,每小题 3 分,共计 30 分)
完善程序(一)
使用快速幂算法求 mod 的值。
#include<iostream>
using namespace std;
int x, p, m, i, result;
int main(){
cin >> x >> p >> m;
result = ①;
while (②){
if (p % 2 == 1)
result = ③;
p /= 2;
x = ④;
}
cout << ⑤ << endl;
return 0;
}
- ① 处应填( )。 {{ select(33) }}
- 0
- 1
- x
- p
- ② 处应填( )。 {{ select(34) }}
- p
- p >= 0
- p != -1
- p == 0
- ③ 处应填( )。 {{ select(35) }}
- result * x
- x * p % m
- result * x % m
- p * p % m
- ④ 处应填( )。 {{ select(36) }}
- x * x % m
- x * p % m
- result * x % m
- p * p % m
- ⑤ 处应填( )。 {{ select(37) }}
- result * x ^ p % m
- result * x % m
- result * x
- result
完善程序(二)
(郊游活动)有 n 名同学参加学校组织的郊游活动,已知学校给这 n 名同学的郊游总经费为 A 元,与此同时第 i 位同学自己携带了 元。为了方便郊游,活动地点提供 B(≥n) 辆自行车供人租用,租用第 j 辆自行车的价格为 元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管理,每位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多有多少位同学能够租用到自行车。 本题采用二分法。对于区间 [l,r] ,我们取中间点 mid 并判断租用到自行车的人数能否达到 mid。判断的过程是利用贪心算法实现的。
#include <iostream>
using namespace std;
#define MAXN 1000000
int n, B, A, M[MAXN], C[MAXN], l, r, ans, mid;
bool check(int nn) {
int count = 0, i, j;
i = ①;
j = 1;
while (i <= n) {
if(②)
count += C[j] - M[i];
i++;
j++;
}
return ③;
}
void sort(int a[], int l, int r) {
int i = l, j = r, x = a[(l + r) / 2], y;
while (i <= j) {
while (a[i] < x) i++;
while (a[j] > x) j--;
if (i <= j) {
y = a[i]; a[i] = a[j]; a[j] = y;
i++; j--;
}
}
if (i < r) sort(a, i, r);
if (l < j) sort(a, l, j);
}
int main() {
int i;
cin >> n >> B >> A;
for (i = 1; i <= n; i++)
cin >> M[i];
for (i = 1; i <= B; i++)
cin >> C[i];
sort(M, 1, n);
sort(C, 1, B);
l = 0;
r = n;
while (l <= r) {
mid = (l + r) / 2;
if(④){
ans = mid;
l = mid + 1;
}else
r = ⑤;
}
cout << ans << endl;
return 0;
}
- ① 处应填( )。 {{ select(38) }}
- n-nn+1
- n-nn-1
- n-nn
- n-1
- ② 处应填( )。 {{ select(39) }}
- M[i]>C[j]
- M[i]<C[j]
- M[i]
- C[j]
- ③ 处应填( )。 {{ select(40) }}
- count<=A
- count<A
- count>0
- A>0
- ④ 处应填( )。 {{ select(41) }}
- mid+1
- check(mid)
- mid-1
- mid>0
- ⑤ 处应填( )。 {{ select(42) }}
- mid+1
- check(mid)
- mid-1
- mid>0
Statistics
Related
In following contests: