#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 = 12b = 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) }}

  • 正确
  • 错误