#BW103. 全国信息素养大赛初中组C++算法应用主题赛初赛模拟试卷01

全国信息素养大赛初中组C++算法应用主题赛初赛模拟试卷01

一、选择题(每题 5 分,共 75 分)

第 1 题

在 C++ 中,下列选项中属于合法变量名的是( )。

{{ select(1) }}

  • 3score
  • _total
  • my-var
  • double

第 2 题

表达式 20 / 3 + 7 % 3 的值是( )。

{{ select(2) }}

  • 5
  • 6
  • 7
  • 8

第 3 题

「非遗剪纸进校园」活动中,根据年龄分配任务组别:10 岁以下为体验组,10~14 岁为进阶组,14 岁以上为挑战组。已知某同学年龄 age = 12,阅读以下代码,该同学被分配到的组别是( )。

if (age < 10)
    cout << "体验组" << endl;
else if (age <= 14)
    cout << "进阶组" << endl;
else
    cout << "挑战组" << endl;

{{ select(3) }}

  • 体验组
  • 挑战组
  • 进阶组
  • 无法确定

第 4 题

阅读以下代码,程序输出的结果是( )。

int s = 0;
for (int i = 1; i <= 9; i += 2) {
    s = s + i;
}
cout << s << endl;

{{ select(4) }}

  • 20
  • 30
  • 25
  • 45

第 5 题

阅读以下代码,程序输出的结果是( )。

int x = 358, s = 0;
while (x > 0) {
    s = s + x % 10;
    x = x / 10;
}
cout << s << endl;

{{ select(5) }}

  • 15
  • 17
  • 16
  • 18

第 6 题

丝绸之路贸易中,商队给货物编号。一个数如果能被它各位数字之和整除,称为「丝路吉祥数」。以下代码统计 1~50 之间丝路吉祥数的个数,程序输出的结果是( )。

int cnt = 0;
for (int i = 1; i <= 50; i++) {
    int sum = 0;
    int t = i;
    while (t > 0) {
        sum = sum + t % 10;
        t = t / 10;
    }
    if (i % sum == 0) cnt++;
}
cout << cnt << endl;

{{ select(6) }}

  • 20
  • 21
  • 23
  • 25

第 7 题

非遗保护项目中,若一个编号的各位数字之和为质数,则标记为「重点保护」。阅读以下程序,输出结果是( )。

bool isPrime(int n) {
    if (n < 2) return false;
    for (int i = 2; i * i <= n; i++)
        if (n % i == 0) return false;
    return true;
}

int main() {
    int cnt = 0;
    for (int n = 101; n <= 120; n++) {
        int sum = 0, t = n;
        while (t > 0) {
            sum += t % 10;
            t /= 10;
        }
        if (isPrime(sum)) cnt++;
    }
    cout << cnt << endl;
    return 0;
}

{{ select(7) }}

  • 8
  • 9
  • 10
  • 11

第 8 题

阅读以下代码,程序输出的结果是( )。

int a[8] = {85, 92, 78, 95, 88, 76, 90, 83};
int cnt = 0;
for (int i = 0; i < 8; i++) {
    if (a[i] >= 90) cnt++;
}
cout << cnt << endl;

{{ select(8) }}

  • 2
  • 3
  • 4
  • 5

第 9 题

「丝路文化」知识竞赛中,需要统计一个英文单词中元音字母(a、e、i、o、u,不区分大小写)的个数。阅读以下代码,程序输出的结果是( )。

string s = "SilkRoad";
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
    char c = s[i];
    if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ||
        c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
        cnt++;
}
cout << cnt << endl;

{{ select(9) }}

  • 2
  • 3
  • 4
  • 5

第 10 题

阅读以下代码,程序输出的结果是( )。

int calc(int a, int b) {
    return a * b + a;
}

int main() {
    int x = 3, y = 4;
    cout << calc(x, y) + calc(y, x) << endl;
    return 0;
}

{{ select(10) }}

  • 24
  • 27
  • 31
  • 35

第 11 题

红色研学活动中,小分队从营地出发向前探索。第 1 分钟前进 2 米,之后每分钟比前一分钟多前进 3 米。以下代码计算前 5 分钟总共前进了多少米,程序输出的结果是( )。

int total = 0, step = 2;
for (int i = 1; i <= 5; i++) {
    total += step;
    step += 3;
}
cout << total << endl;

{{ select(11) }}

  • 30
  • 35
  • 40
  • 45

第 12 题

使用 1 元、2 元、5 元三种面值的纸币凑出 10 元,每种纸币数量不限,顺序不同视为同一种方案。以下代码计算共有多少种不同的凑法,程序输出的结果是( )。

int cnt = 0;
for (int a = 0; a <= 10; a++)
    for (int b = 0; b <= 5; b++)
        for (int c = 0; c <= 2; c++)
            if (a + 2 * b + 5 * c == 10)
                cnt++;
cout << cnt << endl;

{{ select(12) }}

  • 8
  • 9
  • 10
  • 11

第 13 题

红军长征途中经过 8 个站点,海拔高度(单位:米)记录在数组中。以下代码统计海拔不低于 4000 米的高海拔站点数量,并计算平均海拔(整数除法)。程序输出的第一行和第二行分别是( )。

int h[8] = {1600, 4200, 3400, 4800, 2800, 5000, 3800, 4400};
int cnt = 0, sum = 0;
for (int i = 0; i < 8; i++) {
    sum += h[i];
    if (h[i] >= 4000) cnt++;
}
cout << cnt << endl;
cout << sum / 8 << endl;

{{ select(13) }}

  • 4 和 3750
  • 4 和 3787
  • 5 和 3750
  • 5 和 3787

第 14 题

下列关于 C++ 程序基本概念的说法中,正确的是( )。

{{ select(14) }}

  • 在 C++ 中,变量必须先声明再使用
  • C++ 程序中必须至少包含一个 for 循环
  • cout 语句用于从键盘读取数据
  • 数组下标默认从 1 开始

第 15 题

阅读以下代码,程序输出的结果是( )。

int a = 5, b = 10;
if (a > 3 && b < 20) {
    a = a * 2;
    b = b - 5;
} else {
    a = a + 1;
    b = b + 1;
}
cout << a + b << endl;

{{ select(15) }}

  • 14
  • 15
  • 16
  • 17

二、判断题(每题 5 分,共 25 分)

第 16 题

在 C++ 中,表达式 5 % 2 的结果是 1。( )

{{ select(16) }}

  • 正确
  • 错误

第 17 题

执行以下代码,输出两行内容,第一行为 A,第二行为 B。( )

int x = 3;
if (x > 5)
    cout << "A" << endl;
cout << "B" << endl;

{{ select(17) }}

  • 正确
  • 错误

第 18 题

执行以下代码后,变量 s 的值为 55。( )

int s = 0;
for (int i = 1; i < 10; i++) {
    s += i;
}

{{ select(18) }}

  • 正确
  • 错误

第 19 题

定义数组 int a[5] = {10, 20, 30, 40, 50}; 后,a[5] 的值是 50。( )

{{ select(19) }}

  • 正确
  • 错误

第 20 题

在对 1~N 进行枚举的问题中,只要代码里出现了嵌套循环,程序的时间复杂度就一定是 O(N²)。( )

{{ select(20) }}

  • 正确
  • 错误