#S8002. 2025年全国青少年信息素养大赛-算法创意实践挑战赛—真题试卷(初赛)初中组-1

2025年全国青少年信息素养大赛-算法创意实践挑战赛—真题试卷(初赛)初中组-1

2025年全国青少年信息素养大赛-算法创意实践挑战赛—真题试卷(初赛)初中组-1

(满分:100 分 考试时间:60 分钟)

一、单项选择题(共 15 题,每题 5 分,共计 75 分;每题有且仅有一个正确选项)

  1. 在C++中,表达式 (13 & 7) 的值是多少?

{{ select(1) }}

  • 分支结构
  • 循环结构
  • 数据结构
  • 顺序结构
  1. 以下哪段代码能将数组 int a[4] = {2, 4, 6, 8}; 的所有元素变为原来的二倍?

{{ select(2) }}

  • for (int i = 0; i < 4; i++) a[i] *= 2;
  • for (int i = 0; i < 4; i++) a[i] += 2;
  • for (int i = 1; i <= 4; i++) a[i] *= 2;
  • for (int i = 1; i <= 4; i++) a[i] = a[i] * a[i];
  1. 以下哪项是分支结构的正确写法?

{{ select(3) }}

  • if (x > 0) cout << "Positive";
  • if (x > 0) { cout << "Positive"; else cout << "Not"; }
  • while (n > 0) cout << "Positive";
  • for (int i = 0; i < n; i++) cout << "Positive";
  1. 执行以下代码,输出的结果是什么?
int a = 14 / 3 * 3;
cout << a;

{{ select(4) }}

  • 0
  • 14
  • 12
  • 3
  1. 找出以下代码中哪一行是C++中合法的注释?

{{ select(5) }}

  • // 注释此条语句
  • # 注释此条语句
  • (* 注释此条语句 *)
  • &lt;!--注释此条语句--&gt;
  1. 以下说法正确的是?

{{ select(6) }}

  • 执行代码 cout << 13.8 % 2; 会输出1.8
  • 将一个浮点数赋值给一个 char 类型的变量会出现运行时错误
  • 如果代码中不含有 #include<iostream> 将无法通过编译
  • C++可以定义无返回值且无参数函数
  1. 执行下列C++代码,后,计算s[0].d + s[1].i,结果是多少?
struct S { double d; int i; };
S s[2] = {{1.5, 1}, {2.5, 2}};

{{ select(7) }}

  • 4
  • 4.5
  • 3.5
  • 3
  1. 输入一个DNA序列:由字符A、C、G和T组成的字符串。补充下列代码找到最长的连续相同字符子串。下列选项中哪一项正确?
string s;
cin >> s;
int len = __①__, ans = 1;
for(int i = __②__; i < s.size(); i++){
    if(s[i] == s[__③__]) len++;
    else len = 1;
    if(__④__) ans = len;
}
cout << ans;

{{ select(8) }}

  • 1,1, i - 1, len > ans
  • 0, 0, i + 1, len > ans
  • 1, 1, i - 1, len < ans
  • 0, 0, i + 1, len < ans
  1. 阅读以下程序,输入6 7,输出的结果是什么?
int a, b;
cin >> a >> b;
if (a % 2 == 0) a /= 2;
if (a % 2 != 0) a = a * 3 + 1;
cout << a + b;

{{ select(9) }}

  • 28
  • 13
  • 10
  • 17
  1. 下列C++代码中哪个语句运行结果是7?

{{ select(10) }}

  • cout << (char)7;
  • cout << int(4.3333333 + 2.6666666);
  • cout << 66 / 9;
  • cout << 15 / 2.0;
  1. 给定一个包含 n 个整数的数组,你的目标是通过最少的操作使数组变为非递减的(即每个元素不小于它前面的元素)。每次操作可以选择任意一个元素,并将其值增加1。请补全以下代码,计算需要的最少操作次数。下列选项中哪一项正确?
#include< iostream>
using namespace std;
int a[1000];
int main() {
    int n, cnt = 0;
    cin >> n;
    for (int i = 0; i < n; i++) cin >> a[i];
    for (int i = 1; i < n; i++) {
        if (a[i - 1] > a[i]) {
            cnt += __①__;
            __②__;
        }
    }
    cout << cnt;
    return 0;
}

{{ select(11) }}

  • a[i] - a[i - 1], a[i - 1] -= a[i]
  • a[i - 1] - a[i], a[i] += a[i - 1]
  • a[i] - a[i - 1], a[i - 1] = a[i]
  • a[i - 1] - a[i], a[i] = a[i - 1]
  1. 行下列C++代码片段后输出的是什么?
long long sum = 0;
for (int i = 1; i <= 6; i++) {
    long long mul = 1;
    for (int j = 1; j <= i; j++) mul *= i;
    sum += mul;
}
cout << sum % 10;

{{ select(12) }}

  • 6
  • 7
  • 8
  • 9
  1. nn个人,第 ii 个人的当前头发长度为 Li1iNL_i(1≤i≤N)。每个人的头发每天增长11。请计算并输出从第一天开始,第一次出现头发长度至少为 tt 的人数 p≥p 是第几天?
int n, t, p, L[100], cnt;
cin >> n >> t >> p;
for (int i = 0; i < n; i++) cin >> L[i];
for (int i = 1; i < t; i++) {
    cnt = 0;
    for (int j = 0; j < n; j++) {
        if (①) cnt++;
    }
    if (②) {
        cout << i << endl;
        break;
    }
}

{{ select(13) }}

  • L[i]+j≥t, cnt >= p
  • L[j]+i>t, cnt >p
  • L[j]+i≥t, cnt >= p
  • L[i]+j>t, cnt >p
  1. 从一个2x2网格的左上角出发,若只允许向右或向下移动,恰好有如下6条路径可以到达右下角:

补全以下代码,计算对于9x9的网格,有多少条路径可以到达右下角?

int g[10][10] = {};
__①__;
for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (i -1 >=0) g[i][j] += g[i - 1][j];
      __②__g[i][j] += g[i][j - 1];
    }
}
cout << g[9][9];

{{ select(14) }}

  • g[0][0] = 1, if (j - 1 >= 0)
  • g[1][1] = 1, if (j - 1 >= 0)
  • g[0][0] = 1, else if (j - 1 >= 0)
  • g[1][1] = 1, else if (j - 1 >= 0)
  1. 给定一个由正整数组成的长度为 N 的序列A=(A1,A2,,AN)A=(A_1,A_2,…,A_N),请判断这个序列是否为等比数列。等比数列的定义是:对于所有1iN1(Ai+1)/Ai1≤i≤N−1,(A_i+1)/A_i的值都相等。补全以下代码,判断序列 A 是否为等比数列。下列选项中哪一项正确?
int n;
long long a[100];
bool flag = true;
cin >> n;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i < n - 2; i++) {
    if (①) flag = false;
}
if (flag) cout << "Yes" << endl;
else cout << "No" << endl;

{{ select(15) }}

  • a[i]*a[i+1]!=a[i+1]*a[i+2]
  • a[i+1]/a[i]!=a[i?1]/a[i+1]
  • a[i]+a[i+2]!=2*a[i+1]
  • a[i]*a[i+2]!=a[i+1]*a[i+1]

二、判断题( 判断题正确选A,错误选B ;判断题每题 5 分,共计 25 分)

  1. C++中,逻辑与&&的优先级高于逻辑或||,因此true || false && true等价于true || (false && true)

{{ select(16) }}

  1. ASCII码表中,所有数字字符('0'到'9')是连续的。

{{ select(17) }}

  1. string s = "bcd"; s[0] = 'a'; 可以正确将 s 的第一个字符赋值为 'a'。

{{ select(18) }}

  1. 结构体 struct 中只能包含成员变量和成员函数,不能包含结构体类型的变量。

{{ select(19) }}

  1. 定义 int a[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; 后,执行 swap(a[1][2], a[2][2]); 可以正常运行,并且执行 cout << a[2][2]; 时,程序会输出 6

{{ select(20) }}