#BW102. 全国信息素养大赛小学组C++算法应用主题赛初赛模拟试卷01
全国信息素养大赛小学组C++算法应用主题赛初赛模拟试卷01
一、选择题(每题 5 分,共 75 分)
第 1 题
阅读以下代码,输出结果是()。
int a = 5, b = 2;
double c = a / b;
cout << c;
{{ select(1) }}
- 2.5
- 2
- 2.0
- 5
第 2 题
以下表达式中,值为 true(1)的是()。
{{ select(2) }}
- (3 > 5) && (2 < 4)
- !(4 == 4) || (5 < 3)
- (7 % 3 == 1) && (8 / 3 == 2)
- (6 != 6) || (2 >= 3)
第 3 题
阅读以下代码,输出结果是()。
int x = 10, y = 5;
if (x > 5)
if (y > 10)
cout << "A";
else
cout << "B";
else
cout << "C";
{{ select(3) }}
- A
- B
- C
- 无输出
第 4 题
阅读以下代码,输出结果是()。
int s = 0;
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) continue;
if (i > 7) break;
s += i;
}
cout << s;
{{ select(4) }}
- 19
- 22
- 25
- 28
第 5 题
"丝路商队记账"场景中,需要将一串数字反转后记录。阅读以下代码,输入 n = 1234 时,输出结果是()。
int n = 1234, rev = 0;
while (n > 0) {
rev = rev * 10 + n % 10;
n = n / 10;
}
cout << rev;
{{ select(5) }}
- 1234
- 4321
- 10
- 0
第 6 题
阅读以下嵌套循环代码,输出结果是()。
int cnt = 0;
for (int i = 1; i <= 4; i++) {
for (int j = 1; j <= i; j++) {
cnt++;
}
}
cout << cnt;
{{ select(6) }}
- 8
- 10
- 12
- 16
第 7 题
以下代码用于判断正整数 n 是否为质数,横线处应填入()。
int n, cnt = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
if (n % i == 0) cnt++;
}
if (__________)
cout << n << "是质数";
else
cout << n << "不是质数";
{{ select(7) }}
- cnt == 0
- cnt == 1
- cnt == 2
- cnt == n
第 8 题
"非遗传承"活动中,需要将若干件展品均匀分组。以下代码计算两个正整数 a = 12 和 b = 18 的最小公倍数,输出结果是()。
int a = 12, b = 18;
int m = a, n = b;
while (n != 0) {
int t = m % n;
m = n;
n = t;
}
cout << a * b / m;
{{ select(8) }}
- 6
- 12
- 18
- 36
第 9 题
阅读以下代码,输出结果是()。
int a[8] = {3, 1, 4, 1, 5, 9, 2, 6};
int maxIdx = 0;
for (int i = 1; i < 8; i++) {
if (a[i] > a[maxIdx]) maxIdx = i;
}
cout << maxIdx;
{{ select(9) }}
- 0
- 5
- 8
- 9
第 10 题
"九宫格数阵"中,阅读以下二维数组代码,输出结果是()。
int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += a[i][2 - i];
}
cout << sum;
{{ select(10) }}
- 12
- 15
- 18
- 24
第 11 题
阅读以下代码,输出结果是()。
string s = "abc123def456";
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s[i] >= '0' && s[i] <= '9') cnt++;
}
cout << cnt;
{{ select(11) }}
- 3
- 5
- 6
- 9
第 12 题
阅读以下递归函数,fib(6) 的返回值是()。
int fib(int n) {
if (n <= 2) return 1;
return fib(n - 1) + fib(n - 2);
}
{{ select(12) }}
- 5
- 6
- 8
- 13
第 13 题
"冰雹猜想"(Collatz猜想)是一个著名的数学模拟问题。阅读以下代码,输入 n = 6,输出结果是()。
int n = 6, cnt = 0;
while (n != 1) {
if (n % 2 == 0)
n = n / 2;
else
n = n * 3 + 1;
cnt++;
}
cout << cnt;
{{ select(13) }}
- 6
- 7
- 8
- 9
第 14 题
"非遗灯谜"活动中,从 1 到 100 编号的灯笼中,编号能被 3 整除但不能被 5 整除的灯笼会被点亮。以下代码用于统计点亮的灯笼数量,输出结果是()。
int cnt = 0;
for (int i = 1; i <= 100; i++) {
if (i % 3 == 0 && i % 5 != 0) cnt++;
}
cout << cnt;
{{ select(14) }}
- 20
- 27
- 30
- 33
第 15 题
阅读以下综合代码,输出结果是()。
int a[10] = {0};
for (int i = 1; i < 10; i++) {
a[i] = a[i - 1] + i;
}
int cnt = 0;
for (int i = 0; i < 10; i++) {
if (a[i] % 2 == 0) cnt++;
}
cout << cnt;
{{ select(15) }}
- 4
- 5
- 6
- 7
二、判断题(每题 5 分,共 25 分)
第 1 题
在C++中,执行 int a = 3.99; 后,变量 a 的值为 4。
{{ select(16) }}
- 正确
- 错误
第 2 题
在C++中,表达式 (5 > 3 > 1) 的值为 true(1)。
{{ select(17) }}
- 正确
- 错误
第 3 题
阅读以下代码,该代码能正确输出数组中所有元素的值。
int a[5] = {10, 20, 30, 40, 50};
for (int i = 0; i <= 5; i++) {
cout << a[i] << " ";
}
{{ select(18) }}
- 正确
- 错误
第 4 题
在C++中,string 类型变量中的单个字符可以通过下标(如 s[2])直接修改。
{{ select(19) }}
- 正确
- 错误
第 5 题
以下递归函数能正确计算两个正整数的最大公约数(GCD)。
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
{{ select(20) }}
- 正确
- 错误