2026年全国青少年信息素养大赛复赛真题(算法应用主题赛C++初中组:带解析)(7月11日试卷一)【文末附答案和解析】
一、单项选择题
1. C++ 输入语句
在纪念长征胜利的活动中,程序需要从键盘读取参加人数。以下代码片段正确的是( )。
A. cin << renShu;
B. cout >> renShu;
C. cin >> renShu;
D. cout << renShu;
2. 数组访问
以下代码用于计算红军长征经过的 15 个省份中,海拔超过 2000 米的省份数量。该程序存在什么问题( )。
cpp
int heights[15] = {
500, 800, 1200, 3500, 2800,
1500, 2200, 1800, 2400, 900,
1100, 1600, 2000, 3000, 4500
};
int count = 0;
for (int i = 0; i <= 15; i++) {
if (heights[i] > 2000) {
count++;
}
}
cout << count;
A. 数组定义时元素个数与实际不符
B. 循环条件应该是 i < 15,而不是 i <= 15
C. 条件应该是 heights[i] > 2000
D. count 变量的类型应该是 double
3. 八进制转换
延安革命纪念馆的展品编号使用八进制表示。将八进制数 745 转换为十进制,结果是( )。
A. 485
B. 493
C. 501
D. 495
4. 二维数组主对角线
在红军长征路线地图(5 × 5 的网格)中,以下代码用于统计主对角线(从左上到右下)上所有位置的海拔总和。横线处应该填入( )。
cpp
int heights[5][5] = {
500, 600, 700, 800, 900,
550, 1200, 650, 750, 850,
520, 580, 3500, 680, 780,
530, 590, 640, 2000, 720,
540, 600, 660, 700, 1500
};
int sum = 0;
for (int i = 0; i < 5; i++) {
sum += heights[i][i];
}
A. heights[i][i]
B. heights[i][4 - i]
C. heights[i][0]
D. heights[0][i]
5. 递归计算阶乘
长征途中,红军某部有 5 位通讯员,需要依次将一份重要情报从前方指挥所传递至后方驻地。为安全起见,指导员打算让他们以不同的先后顺序出发,列出所有可能的排列方案供参考选用。
要确定 5 位通讯员所有可能的出发顺序总数,本质上是计算 5 的阶乘(5!)。小红编写了如下使用递归计算阶乘的 C++ 代码。如果调用 factorial(5),函数的返回值是( )。
cpp
int factorial(int n) {
if (n <= 1) return 1;
return n * factorial(n - 1);
}
A. 5
B. 15
C. 120
D. 25
二、多项选择题
6. C++ 变量名
在长征历史知识问答系统的函数内部声明普通局部变量时,以下哪些是 C++ 中合法的变量名( )。
A. changZheng
B. _1934
C. hongSeWenHua
D. 1934year
7. 数组的性质
在革命烈士名录管理系统中,使用数组 arr 存储烈士信息。无数革命烈士为了民族独立和人民解放献出了宝贵生命,他们的精神永远值得我们铭记和缅怀。以下关于 C++ 数组 arr 的说法,正确的是( )。
A. C++ 中数组的下标从 0 开始
B. 访问 arr[n] 时,n 可以是任意整数
C. 系统会为数组 arr 分配一块连续的内存空间来存放信息
D. 数组越界访问会导致未定义行为,可能引发程序崩溃
8. C++ 函数
在八路军后勤部的物资管理系统中,使用函数来处理各种计算任务。八路军在敌后战场英勇抗战,平型关大捷打破了日军不可战胜的神话,百团大战振奋了全国军民抗战信心。以下关于 C++ 函数的说法,正确的是( )。
A. 函数可以提高代码的复用性
B. 函数必须先声明或定义,之后才能调用
C. 函数的参数可以有默认值
D. 函数可以没有返回值(使用 void)
9. C++ 结构体
在革命历史教育实践活动中,某小学计划开发一个"革命英雄电子档案"小程序,用来记录革命先辈的基本信息,供同学们学习缅怀。小红负责系统核心数据结构的设置,她用 C++ 结构体来描述每一位英雄的档案,代码如下:
cpp
struct Hero {
string name;
int age;
string unit;
bool martyr;
};
Hero h1;
Hero h2;
Hero heroes[100];
关于上述 C++ 结构体 Hero 及其使用方法,以下说法正确的是( )。
A. 结构体 Hero 能够将 string、int、bool 等不同类型的数据组合成一个整体进行管理,这是结构体相较于数组的核心优势 B. 可以用 h1.name 的方式访问普通结构体变量的成员
C. 结构体 Hero 定义末尾的分号 ; 可以省略,因为右花括号 } 已经明确标识了结构体定义的结束位置
D. 语句 h2 = h1; 是非法的,两个同类型结构体变量之间必须逐个成员赋值,不能用 = 整体赋值
10. 单向链表的时间复杂度
在抗日战争时期的隐蔽战线上,为了保证组织安全,地下情报的传递往往采取单线联系的模式,这种传递路径在逻辑上高度契合计算机科学中的单向链表结构。无数地下党员冒着生命危险,在看不见的战线上默默奉献,为抗战的全面胜利筑起了坚不可摧的堡垒。
在模拟这种情报传递路径的单向链表数据结构中,以下哪些操作的时间复杂度是 O(n)( )。
A. 在单向链表中查找第 n 个节点
B. 在单向链表中删除最后一个节点
C. 遍历整个链表
D. 在已知节点后插入新节点
三、编程题
1. 红军伤员分配
题目描述
某次战斗后有 n 名伤员需要分配到各个医疗点,每个医疗点最多接收 m 名伤员。请问至少需要多少个医疗点才能安置所有伤员?
输入格式
一行两个整数 n, m,分别表示伤员人数和每个医疗点最多接收的人数。
输出格式
输出一个整数,表示至少需要的医疗点数量。
输入输出样例
样例 1
输入:
25 8
输出:
4
样例 2
输入:
16 8
输出:
2
样例 3
输入:
100 25
输出:
4
说明提示
- 样例 1:25 名伤员,每个医疗点最多接收 8 人。前 3 个医疗点各接收 8 人,第 4 个医疗点接收 1 人,共需要 4 个医疗点。
- 样例 2:16 名伤员,每个医疗点最多接收 8 人,正好需要 2 个医疗点。
- 样例 3:100 名伤员,每个医疗点最多接收 25 人,需要 4 个医疗点。
数据范围
- 1 ≤ n ≤ 1000
- 1 ≤ m ≤ 100
2. 部队番号统计
题目描述
某次战役中有 n 支红军部队参战,每支部队有一个番号(1 到 100 之间的整数)。现统计各番号部队的数量,请输出数量最多的部队番号及其数量。如果有多支部队数量相同且最多,输出番号最小的部队。
输入格式
第一行一个整数 n,表示部队数量。
第二行 n 个整数,表示每支部队的番号。
输出格式
输出一行两个整数,两个整数之间用一个空格隔开,分别表示数量最多的部队番号及其数量。
输入输出样例
样例 1
输入:
10
5 3 5 7 3 5 8 3 3 9
输出:
3 4
样例 2
输入:
8
1 2 1 2 3 3 3 2
输出:
2 3
样例 3
输入:
5
7 7 7 7 7
输出:
7 5
说明提示
- 样例 1:番号 3 出现 4 次,番号 5 出现 3 次,因此输出
3 4。 - 样例 2:番号 1 出现 2 次,番号 2 和番号 3 均出现 3 次。二者出现次数相同且最多,输出较小的番号 2。
- 样例 3:只有番号 7 出现 5 次。
数据范围
- 1 ≤ n ≤ 1000
- 1 ≤ 番号 ≤ 100
3. 红旗制作
题目描述
长征途中,红军某部队要至少制作 K 面长度相同的红旗,用于各连队的识别标识。
部队缴获了 N 卷红布原料,第 i 卷的长度为 a_i 厘米。每卷红布的一端都有敌方军工厂的封条装订标记,这部分必须先从该卷中裁掉 D 厘米才能使用。第 i 卷红布的可用长度按 max(a_i - D, 0) 计算。裁掉封条部分后,剩余的红布(若还有长度)再切成若干面长度相同且为正整数厘米的红旗,不足一面的末端红布作为包扎伤员用的布条留存。
请问每面红旗最长可以是多少厘米?如果连 1 厘米长的红旗都做不出来,输出 0。
输入格式
第一行包含 3 个正整数 N, K, D,分别表示红布卷数、至少需要制作的红旗数量、每卷需要裁掉的封条长度。
第二行包含 N 个正整数 a_1, a_2, ..., a_N,表示每卷红布原料的长度。
输出格式
输出一行一个整数,表示每面红旗的最大长度。如果切不出 1 厘米长的红旗,输出 0。
输入输出样例
样例 1
输入:
3 5 3
10 20 30
输出:
8
样例 2
输入:
2 4 1
11 21
输出:
6
样例 3
输入:
3 100 2
5 5 5
输出:
0
说明提示
样例 1:裁掉封条后,三卷红布的可用长度分别为 7、17、27 厘米。
- 若每面红旗长 8 厘米,可制作
7/8 + 17/8 + 27/8 = 0 + 2 + 3 = 5面,满足需求。 - 若每面红旗长 9 厘米,可制作
7/9 + 17/9 + 27/9 = 0 + 1 + 3 = 4面,不满足需求。
因此,每面红旗的最大长度为 8 厘米。
样例 2:可用长度分别为 10、20 厘米。
- 若每面红旗长 6 厘米,可制作
10/6 + 20/6 = 1 + 3 = 4面,满足需求。 - 若每面红旗长 7 厘米,可制作
10/7 + 20/7 = 1 + 2 = 3面,不满足需求。
因此,每面红旗的最大长度为 6 厘米。
样例 3:裁掉封条后,每卷红布仅剩 3 厘米,最多只能制作 9 面 1 厘米长的红旗,不足 100 面,因此输出 0。
数据范围
- 对于全部数据:1 ≤ D ≤ 50
- 对于 70% 的数据: 1 ≤ N ≤ 1000 1 ≤ N ≤ 1000 1≤N≤1000, 1 ≤ K ≤ 10 5 1 ≤ K ≤ 10^5 1≤K≤105, 1 ≤ a i ≤ 10 4 1 ≤ a_i ≤ 10^4 1≤ai≤104
- 对于 100% 的数据: 1 ≤ N ≤ 10 5 1 ≤ N ≤ 10^5 1≤N≤105, 1 ≤ K ≤ 10 9 1 ≤ K ≤ 10^9 1≤K≤109, 1 ≤ a i ≤ 10 8 1 ≤ a_i ≤ 10^8 1≤ai≤108
4. 长征纪念馆参观
题目描述
长征纪念馆内安装了一部奇怪的参观电梯。整座纪念馆共 N 层,每一层的墙上都刻着一个数字 K_i。当电梯停在第 i 层时:
- 按"上"按钮,电梯会上升 K i K_i Ki 层,即到达第 i + K i i + K_i i+Ki 层;
- 按"下"按钮,电梯会下降 K i K_i Ki 层,即到达第 i − K i i - K_i i−Ki 层;
- 若目标楼层不在 1 到
N的范围内(即小于 1 或大于N),相应按钮会失灵。
当 K i = 0 K_i = 0 Ki=0 时,按"上"或"下"按钮都会停留在原楼层。若目标展厅就在 1 楼,则最少按键次数为 0。
红军后代参观团队从 1 楼(纪念馆入口)进入,想要到达第 B 层的某个展厅。请问他们最少要按几次"上"或"下"按钮才能到达?如果无论怎样按都无法到达,输出 -1。
输入格式
第一行包含两个正整数 N 和 B。
第二行包含 N 个非负整数 K 1 , K 2 , . . . , K N K_1, K_2, ..., K_N K1,K2,...,KN。
输出格式
输出一行一个整数,表示最少按键次数;若无法到达,输出 -1。
输入输出样例
样例 1
输入:
5 5
3 3 1 2 5
输出:
3
样例 2
输入:
10 10
6 2 1 3 1 3 1 3 2
输出:
5
样例 3
输入:
4 2
2 0 2 0
输出:
-1
说明提示
- 样例 1:从 1 楼出发,依次到达 1 → 4 → 2 → 5,共按 3 次按钮。
- 样例 2:一条合法的最短路径是 1 → 3 → 5 → 8 → 7 → 10,共按 5 次按钮。
- 样例 3:从 1 楼按"上"只能到达 3 楼;从 3 楼再按按钮,只能越界或返回 1 楼,无法到达 2 楼,因此输出
-1。
数据范围
- 1 ≤ N ≤ 100
- 1 ≤ B ≤ N
- 0 ≤ K i ≤ N 0 ≤ K_i ≤ N 0≤Ki≤N
参考答案与解析
一、单项选择题
1. C
解析 :C++ 中标准输入是 cin,与变量之间使用提取运算符 >>。
2. B
解析 :数组 heights[15] 的合法下标是 0 ~ 14,循环写成 i <= 15 会导致访问 heights[15],造成数组越界,属于未定义行为。应改为 i < 15。
A 错:数组初始化元素个数正好是 15 个,与实际相符。
C 错:题目条件本就是 > 2000。
D 错:统计数量用 int 足够。
3. A
解析 :八进制 745 按权展开:
7 × 8² + 4 × 8¹ + 5 × 8⁰ = 7 × 64 + 4 × 8 + 5 = 448 + 32 + 5 = 485。
所以选 A。
4. A
解析 :主对角线元素的行号和列号相等,所以应使用 heights[i][i]。
5. C
解析 :factorial(5) = 5 × 4 × 3 × 2 × 1 = 120。
二、多项选择题
6. ABC
解析 :C++ 变量名(标识符)可由字母、数字、下划线组成,但不能以数字开头。
A、B、C 都合法;D 以数字开头,非法。
7. ACD
解析 :
A 正确:数组下标从 0 开始。
B 错误:下标必须是合法范围内的整数,不能是"任意整数"。
C 正确:数组分配连续内存空间。
D 正确:数组越界访问属于未定义行为,可能导致程序崩溃。
8. ABCD
解析 :
A 正确:函数可以提高代码复用性。
B 正确:函数必须先声明或定义,才能调用。
C 正确:函数参数可以设置默认值。
D 正确:函数返回值类型可以是 void,表示无返回值。
9. AB
解析 :
A 正确:结构体可以将不同类型组合成整体。
B 正确:普通结构体变量用 . 访问成员。
C 错误:结构体定义末尾的 ; 不能省略。
D 错误:同类型结构体变量可以直接整体赋值,如 h2 = h1; 是合法的。
10. ABC
解析 :
A:查找第 n 个节点需要从头遍历,时间复杂度 O(n)。
B:删除最后一个节点需要先找到倒数第二个节点,时间复杂度 O(n)。
C:遍历整个链表需要访问所有节点,时间复杂度 O(n)。
D:在已知节点后插入新节点只需要修改指针,时间复杂度 O(1)。
三、编程题参考答案
1. 红军伤员分配
思路分析
本题要求计算至少需要多少个医疗点,每个医疗点最多容纳 m 人,共有 n 名伤员。
使用 if 语句进行分支判断:
- 如果
n能被m整除(即n % m == 0),则需要的医疗点数正好是n / m。 - 如果不能整除,则先安排
n / m个满员的医疗点,剩余n % m人还需要额外一个医疗点,所以结果为n / m + 1。
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int ans; //存储答案
if (n % m == 0) { //如果能整除
ans = n / m; //正好需要n/m个医疗点
} else { //如果不能整除
ans = n / m + 1; //需要n/m个满的再加1个
}
cout << ans;
return 0;
}
2. 部队番号统计
思路分析
本题需要统计每个番号的出现次数,并找出出现次数最多的番号(若次数相同,取番号最小者)。
由于番号范围固定为 1 ~ 100,最直接的方法是使用一个大小为 101 的计数数组(下标对应番号)。
- 读入
n和所有番号,每读一个,对应计数器加 1。 - 遍历番号
1 ~ 100,找出计数最大的值,同时记录该番号。 - 因为遍历是从小到大,当遇到计数大于当前最大值时才更新(等于时不更新),这样就能保证在次数相同时保留更小的番号。
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
int n;
int c[101];//c[i]表示番号i出现的次数,初始为0
int main() {
cin >> n;
for (int i = 1; i <= n; i++) { //循环读入每个部队的番号
int x; //当前部队的番号
cin >> x;//读入番号
c[x]++;//对应番号计数加1
}
int ans = 1; //ans:出现次数最多的番号,初始为1
int mx = c[1]; //mx:最大出现次数,初始为番号1的次数
for (int i = 2; i <= 100; i++) {//从2开始遍历到100
if (c[i] > mx) { //如果当前番号出现次数更多
mx = c[i];//更新最大次数
ans = i; //更新答案番号
}
}
cout << ans << " " << mx; //输出番号和次数
return 0;
}
3. 红旗制作
思路分析
本题需要找到满足条件的最大的红旗长度 L(正整数)。对于给定的 L,可以计算出所有红布卷能切出的红旗总数:
总数量 = Σ (max(a_i - D, 0) / L) (整数除法,向下取整)
如果总数量 ≥ K,说明 L 可行;否则不可行。
由于 L 越大,能切出的红旗数量越少,所以问题具有单调性:若 L 可行,则所有 ≤ L 的长度都可(至少能切出更多)。因此可以使用二分答案来寻找最大可行长度。
- 二分下界
l = 1,上界r = 最大可用长度(即所有max(a_i-D, 0)中的最大值,也可以取max(a_i),因为减去 D 后只会更小,取最大 a_i 作为上界安全)。 - 如果
check(1)返回false(即连 1 厘米都切不出 K 面),则直接输出 0。 - 否则二分找到最大的
mid使得check(mid)为真。
复杂度 :O(N log M),其中 M 是最大可用长度,最大约 1e8,log2(1e8) ≈ 27,N ≤ 1e5。
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
int N, K, D; //N:卷数, K:所需红旗数, D:每卷裁掉长度
int a[100010]; //存储每卷原长度
// 检查函数:判断长度为x时能否切出至少K面红旗
bool ck(int x) {
long long s = 0; //累计可做红旗数,用long long防止溢出
for (int i = 0; i < N; i++) {
int u = a[i] - D; //可用长度
if (u < 0) u = 0; //不超过0则取0
s += u / x;//累加该卷能切出的数量
if (s >= K) return true; //提前退出优化
}
return s >= K;
}
int main() {
cin >> N >> K >> D;
int mx = 0; //记录最大可用长度(用于二分上界)
for (int i = 0; i < N; i++) {
cin >> a[i]; //读入每卷长度
int u = a[i] - D;
if (u < 0) u = 0;
if (u > mx) mx = u; //更新最大可用长度
}
if (!ck(1)) { //如果1厘米都做不出K面
cout << 0; //输出0
return 0;
}
int l = 1, r = mx, ans = 1;//二分左右边界和答案
while (l <= r) {
int mid = (l + r) / 2;//中间值
if (ck(mid)) { //如果mid可行
ans = mid; //记录答案
l = mid + 1; //尝试更大的长度
} else {
r = mid - 1; //否则减小长度
}
}
cout << ans; //输出最大长度
return 0;
}
4. 长征纪念馆参观
思路分析
本题可以抽象成一个无权图的最短路问题:
- 共有
N个节点(楼层 1 ~ N)。 - 从节点
i出发,有两条有向边:- 到 i + K i i + K_i i+Ki(如果 1 ≤ i + K i ≤ N 1 ≤ i+K_i ≤ N 1≤i+Ki≤N)
- 到 i − K i i - K_i i−Ki(如果 1 ≤ i − K i ≤ N 1 ≤ i-K_i ≤ N 1≤i−Ki≤N)
- 每条边的权值都为 1(按一次按钮)。
- 求从起点 1 到终点 B 的最短路径长度(按键次数),若不可达则输出 -1。
由于 N ≤ 100,使用 广度优先搜索 (BFS) 即可高效求解。BFS 能保证第一次到达终点时的步数就是最少步数。
- 使用一个队列存储待扩展的楼层。
- 用
vis数组标记楼层是否已访问,避免重复入队。 - 用
d数组记录到达每个楼层的最少按键次数(也可在队列中同时存储步数,但用数组更简洁)。 - 初始时
vis[1] = true,d[1] = 0,将 1 入队。 - 每次取出队首楼层
u,若u == B则直接输出d[u]并结束。 - 否则计算两个可能的目标楼层
v = u + K[u]和v = u - K[u],若在合法范围内且未访问,则标记、记录步数(d[v] = d[u] + 1)并入队。 - 若队列空仍未到达,则输出 -1。
代码实现
cpp
#include <bits/stdc++.h>
using namespace std;
int N, B; //N:楼层总数, B:目标楼层
int k[110]; //k[i]表示第i层的数字
bool vis[110]; //vis[i]标记第i层是否已访问
int d[110]; //d[i]记录到达第i层的最少按键次数
queue<int> q; //BFS队列
int main() {
cin >> N >> B;
for (int i = 1; i <= N; i++) {
cin >> k[i];
}
vis[1] = true; //起点1已访问
d[1] = 0; //起点步数为0
q.push(1); //起点入队
while (!q.empty()) {
int u = q.front();//取出队首楼层
q.pop();
if (u == B) {//如果到达目标楼层
cout << d[u]; //输出最少按键次数
return 0; //程序结束
}
int v1 = u + k[u]; //按"上"到达的楼层
if (v1 >= 1 && v1 <= N && !vis[v1]) { //若楼层合法且未访问
vis[v1] = true; //标记已访问
d[v1] = d[u] + 1; //步数加1
q.push(v1);//入队
}
int v2 = u - k[u]; //按"下"到达的楼层
if (v2 >= 1 && v2 <= N && !vis[v2]) { //若楼层合法且未访问
vis[v2] = true; //标记已访问
d[v2] = d[u] + 1; //步数加1
q.push(v2); //入队
}
}
cout << -1; //队列空还未到达,输出-1
return 0;
}
关注老师的专栏,查看完整版全国青少年信息素养大赛C++备赛资料(初赛+复赛):
https://blog.csdn.net/weixin_66461496/category_12969975.html
相关课程《全国青少年信息素养大赛C++初赛真题试卷及答案解析》(视频课)
https://www.bilibili.com/cheese/play/ss447406764
相关课程《全国青少年信息素养大赛C++复赛真题试卷及答案解析》(视频课)
https://www.bilibili.com/cheese/play/ep2532538
各种学习资料,助力大家一站式学习和提升!!!
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"########## 一站式掌握信奥赛知识! ##########";
cout<<"############# 冲刺信奥赛拿奖! #############";
cout<<"###### 课程购买后永久学习,不受限制! ######";
return 0;
}
【秘籍汇总】(完整csp信奥赛C++学习资料):
1、csp/信奥赛C++,完整信奥赛系列课程(永久学习):
https://edu.csdn.net/lecturer/7901 点击跳转

2、CSP信奥赛C++竞赛拿奖视频课:
https://edu.csdn.net/course/detail/40437 点击跳转

https://edu.csdn.net/course/detail/41081 点击跳转

3、csp信奥赛高频考点知识详解及案例实践:
CSP信奥赛C++动态规划:
https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转
CSP信奥赛C++标准模板库STL:
https://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转
信奥赛C++提高组csp-s知识详解及案例实践:
https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转
4、csp信奥赛冲刺一等奖有效刷题题解:
信奥赛C++普及组CSP-J一等奖通关刷题题单及题解:
https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转
信奥赛C++普及组csp-j初赛&复赛真题题解(持续更新): https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转
信奥赛C++提高组csp-s初赛&复赛真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转
5、GESP C++考级真题题解:

GESP(C++ 一级+二级+三级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转

GESP(C++ 四级+五级+六级)真题题解(持续更新):https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转

GESP(C++ 七级+八级)真题题解(持续更新):
https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转
· 文末祝福 ·
cpp
#include<bits/stdc++.h>
using namespace std;
int main(){
cout<<"跟着王老师一起学习信奥赛C++";
cout<<" 成就更好的自己! ";
cout<<" csp信奥赛一等奖属于你! ";
return 0;
}

