CSP-J初赛试题之一
一、单项选择题(共15题,每题2分,共计30分)
-
32位int类型的存储范围是?
A. -2147483647~+2147483647
B. -2147483647~+2147483648
C. -2147483648~+2147483647
D. -2147483648~+2147483648
-
计算(14-10)×13-13的结果,并选择答案的十进制值?
A. 13
B. 14
C. 15
D. 16
-
某公司有10名员工,分为3个部门:A部门4人,B部门3人,C部门3人。现需要从这10名员工中选出4人组成一个工作组,且每个部门至少要有1人。问有多少种选择方式?
A. 120
B. 126
C. 132
D. 238
-
以下哪个序列对应数组0至8的4位二进制格雷码(Gray code)?
A. 0000,0001,0011,0010,0110,0111,0101,1000
B. 0000,0001,0011,0010,0110,0111,0100,0101
C. 0000,0001,0011,0010,0100,0101,0111,0110
D. 0000,0001,0011,0010,0110,0111,0101,0100
-
记1KB为1024字节(byte),1MB为1024KB,那么1MB是多少二进制位(bit)?
A. 1000000
B. 1048576
C. 8000000
D. 8388608
-
以下哪个不是C++中的基本数据类型?
A. int
B. float
C. struct
D. char
-
以下哪个不是C++中的循环语句?
A. for
B. while
C. do-while
D. repeat-until
-
在C/C++中,(char)(a+13)与下面的哪个值相等?(假设a的ASCII码为97)
A. ‘b’
B. ‘n’
C. ‘m’
D. ‘z’
-
假设有序表中有1000个元素,则用二分法查找元素x最多需要比较多少次?
A. 25
B. 10
C. 7
D. 1
-
下面哪一个不是操作系统名字?
A. Notepad
B. Linux
C. Windows
D. macOS
二、阅读程序(程序输入不超过数组或字符串定义的范围;判断题正确填√,错误填×;除特殊说明外,判断题1.5分,选择题3分,共计40分)
程序1:判断质数并求和
#include <iostream>
using namespace std;bool isPrime(int n) {if (n <= 1) {return false;}for (int i = 2; i * i <= n; i++) {if (n % i == 0) {return false;}}return true;
}int countPrimes(int n) {int count = 0;for (int i = 2; i <= n; i++) {if (isPrime(i)) {count++;}}return count;
}int sumPrimes(int n) {int sum = 0;for (int i = 2; i <= n; i++) {if (isPrime(i)) {sum += i;}}return sum;
}int main() {int x;cin >> x;cout << sumPrimes(x) << endl;cout << countPrimes(x) << endl;return 0;
}
判断题:
- 当输入为10时,程序的第一个输出为17,第二个输出为4。(
- 若将isPrime函数中的条件改为i <= n/2,程序仍然可以正确判断质数,但效率降低。
选择题:
3. 当输入为20时,程序的输出为?
A. 77, 8
B. 100, 8
C. 77, 10
D. 100, 10
三、完善程序(单选题,每小题3分,共计30分)
程序1:字符串解码
#include <iostream>
#include <string>
using namespace std;string decodeString(string s) {string result;int i = 0;while (i < s.length()) {if (s[i] != '[' && s[i] != ']' && (s[i] < '0' || s[i] > '9')) {result += s[i];i++;} else if (s[i] >= '0' && s[i] <= '9') {int count = 0;while (i < s.length() && s[i] >= '0' && s[i] <= '9') {count = count * 10 + (s[i] - '0');i++;}i++; // 跳过'['string temp;while (s[i] != ']') {temp += s[i];i++;}i++; // 跳过']'for (int j = 0; j < count; j++) {result += temp;}}}return result;
}int main() {string s;cin >> s;cout << decodeString(s) << endl;return 0;
}
单选题:
- 若输入为"3[a2[c]]",则输出为?
A. accaccacc
B. acacac
C. cccaaa
D. aaaccc
答案及解析留言索取 ~