考试时间: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=4,4*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→10,10+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=50079,50079%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] = 1, if (j - 1 >= 0)
B. g[1][1] = 1, else if (j - 1 >= 0)
C. g[0][0] = 1, if (j - 1 >= 0)
D. g[0][0] = 1, else 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]=6,a[2][2]=9,交换后a[2][2]=6。
加入工作室
学习编程知识
锻炼逻辑思维
让自己变得更优秀
欢迎同学们组队
学习 C++
感受不一样的程序人生
成为新时代的领军人物
扫码关注
感谢您关注
信奥科创工作室
官方微信

互动支持
期待您的 分享 点赞 在看