初赛真题一 | 2026年 全国青少年信息素养大赛 C++ 初中组

四季读书网 1 0
初赛真题一 | 2026年 全国青少年信息素养大赛 C++ 初中组

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

适用:初中组|算法创意主题赛

版本:2026 初赛真题一

内容:试题 + 答案 + 详细解析

用途:备考刷题、复习巩固、赛前训练


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

第 1 题

C++ 程序流程控制的基本结构不包括以下哪项?()

A. 数据结构

B. 分支结构

C. 循环结构

D. 顺序结构

✅ 正确答案:A

解析:C++ 流程控制三大结构:顺序、分支、循环;数据结构不属于流程控制。


第 2 题

以下哪段代码能将数组 int a[4] = {2, 4, 6, 8}; 的所有元素变为原来的二倍?()

A. for (int i = 0; i < 4; i++) a[i] += 2;

B. for (int i = 0; i < 4; i++) a[i] *= 2;

C. for (int i = 1; i <= 4; i++) a[i] = a[i] * a[i];

D. for (int i = 1; i <= 4; i++) a[i] *= 2;

✅ 正确答案:B

解析:*=2 表示乘 2;数组下标从 0 开始,C、D 下标越界。


第 3 题

以下哪项是分支结构的正确写法?()

A. while (n > 0) cout << "Positive";

B. if (x > 0) {cout << "Positive"; else cout << "Not";}

C. for (int i = 0; i < n; i++) cout << "Positive";

D. if (x > 0) cout << "Positive";

✅ 正确答案:D

解析:A、C 是循环;B 语法错误(else 写在了 if 控制的 {} 内部,导致语法不合法。),else 前缺少}


第 4 题

执行以下代码,输出的结果是?()

1
2

int a = 14 / 3 * 3;cout << a;

A. 14    B. 3    C. 0    D. 12

✅ 正确答案:D

解析:整数除法14/3=44*3=12


第 5 题

找出以下代码中哪一行是 C++ 中合法的注释?()

A. (“注释此条语句”)

B. // 注释此条语句

C. # 注释此条语句

D./注释此条语句/

✅ 正确答案:B

解析:C++ 单行注释用//


第 6 题

以下说法正确的是?()

A. 执行cout << 13.8 % 2;会输出 1.8

B. 如果代码中不含有#include<iostream>将无法通过编译

C. 将一个浮点数赋值给一个 char 类型的变量会出现运行时错误

D. C++ 可以定义无返回值且无参数函数

✅ 正确答案:D

解析:A:%不能用于浮点数;B:不用 iostream 可编译;C:隐式转换不报错;D 正确。


第 7 题

执行下列 C++ 代码:

1
2
3
4
5

struct S {    double d;    int i;};S s[2] = {{1.5, 1}, {2.5, 2}};

计算s[0].d + s[1].i,结果是多少?()

A. 3.5    B. 4.5    C. 3    D. 4

✅ 正确答案:A

解析:1.5 + 2 = 3.5


第 8 题

输入一个 DNA 序列(由字符 A、C、G 和 T 组成的字符串),补充下列代码找到最长的连续相同字符子串。下列选项中哪一项正确?( )

1
2
3
4
5
6
7
8
9

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;

A. 1, 1, i - 1, len < ans

B. 0, 0, i + 1, len > ans

C. 0, 0, i + 1, len < ans

D. 1, 1, i - 1, len > ans

✅ 正确答案:D

解析:初始len=1,从i=1遍历,比较s[i-1]len>ans时更新。


第 9 题

阅读以下程序,输入6 7,输出的结果是?()

1
2
3
4
5

int a, b; cin >> a >> b;if (a % 2 == 0) a /= 2;if (a % 2 != 0) a = a * 3 + 1;cout << a + b;

A. 28    B. 17    C. 10    D. 13

✅ 正确答案:B

解析:a=6→3→1010+7=17


第 10 题

下列 C++ 代码中哪个语句运行结果是7?()

A. cout << (char)7;

B. cout << 15 / 2.0;

C. cout << 66 / 9;

D. cout << int(4.3333333 + 2.6666666);

✅ 正确答案:C

解析:66/9整数除法结果为 7。


第 11 题

给定一个包含 n 个整数的数组,目标是通过最小的操作使数组变为非递减的(每个元素不小于它前面的元素)。每次操作可以选择任意一个元素,并将其值增加 1。补全以下代码,计算需要的最小操作次数。下列选项中哪一项正确?( )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#include<iostream>usingnamespacestd;int a[100]; // 数组大小声明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;    return0;}

A. a[i - 1] - a[i], a[i] += a[i - 1]

B. a[i - 1] - a[i], a[i] = a[i - 1]

C. a[i] - a[i - 1], a[i - 1] = a[i]

D. a[i] - a[i - 1], a[i - 1] = a[i]

✅ 正确答案:B

解析:次数为差值,把a[i]改成a[i-1],这道题的核心逻辑是:遇到前一个元素比后一个大时,直接把后一个元素 “拉平” 到和前一个元素一样大,这样既能保证局部非递减,又不会影响后续元素的处理,统计的差值就是需要加的次数,也就是最小操作次数。


第 12 题

执行下列 C++ 代码片段后输出的是?()

1
2
3
4
5
6
7
8

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;    //sum %= 10; // 每次都取余,优化}cout << sum % 10;

A. 8    B. 6    C. 7    D. 9

✅ 正确答案:D

解析:本题核心逻辑是对每个 i(1~6),计算 i 的 i 次方,然后把这些值累加,最后取结果的个位数。若i比较大时,可考虑每一步加完 mul 后,立刻对 sum 取余 10,全程只保留个位数,完全不计算超大数,速度最快、最安全。总和为1+4+27+256+3125+46656=5007950079%10=9


第 13 题

有 n 个人,第 i 个人的当前头发长度为 。每个人的头发每天增长 1。请计算并输出从第一天开始,第一次出现头发长度至少为 t 的人数  是第几天?()

1
2
3
4
5
6
7
8
9
10
11
12
13

int n, t, p, L[100]={0}, 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;    }}

A. L[j] + i > t, cnt > p

B. L[i] + j > t, cnt > p

C. L[i] + j >= t, cnt >= p

D. L[j] + i >= t, cnt >= p

✅ 正确答案:D

解析:第i天长度L[j]+i≥t,人数cnt≥p


第 14 题

计算在9×9网格中从左上角到右下角的路径数量(只允许向右或向下移动),补全以下代码:(   )

1
2
3
4
5
6
7
8
9
10

int g[10][10] = {0};___ ___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];

A. g[1][1] = 1if (j - 1 >= 0)

B. g[1][1] = 1else if (j - 1 >= 0)

C. g[0][0] = 1if (j - 1 >= 0)

D. g[0][0] = 1else if (j - 1 >= 0)

✅ 正确答案:C

解析:起点g[0][0]=1,左边合法才累加。


第 15 题

给定一个由正整数组成的长度为 N 的序列,,请判断这个序列是否为等比数列。等比数列的定义是:对于所有  的值都相等。补全以下代码,判断序列 A 是否为等比数列。下列选项中哪一项正确?()

1
2
3
4
5
6
7
8
9
10

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;

A. a[i] * a[i + 1] != a[i + 1] * a[i + 2]

B. a[i] + a[i + 2] != 2 * a[i + 1]

C. a[i + 1] / a[i - 1] = a[i - 1] / a[i + 1]

D. a[i] * a[i + 2] != a[i + 1] * a[i + 1]

✅ 正确答案:D

解析:等比数列的核心性质是中间项的平方等于前后两项的乘积,即 ,即a[i+1]² = a[i]×a[i+2]


二、判断题(对打√,错打 ×,每题 5 分,共 5 题,25 分)

第 16 题

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

✅ 正确答案:√

解析:&&优先级高于||,先算&&


第 17 题

ASCII 码表中,所有数字字符‘0’‘9’是连续的。()

✅ 正确答案:√

解析:0-9的 ASCII 码连续(48~57)。


第 18 题

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

✅ 正确答案:√

解析:string 支持下标修改字符。


第 19 题

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

✅ 正确答案:×

解析:结构体可以嵌套结构体。


第 20 题

定义int a[3][3] = {1,2,3,4,5,6,7,8,9};后,执行swap(a[1][2], a[2][2]);,输出a[2][2]为 6。()

✅ 正确答案:√

解析:a[1][2]=6a[2][2]=9,交换后a[2][2]=6


加入工作室

学习编程知识

锻炼逻辑思维

让自己变得更优秀

欢迎同学们组队

学习 C++

感受不一样的程序人生

成为新时代的领军人物


扫码关注

感谢您关注

信奥科创工作室

官方微信

初赛真题一 | 2026年 全国青少年信息素养大赛 C++ 初中组 第1张

互动支持

期待您的 分享 点赞 在看

抱歉,评论功能暂时关闭!