2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练1:文末付答案)

2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练1:文末付答案)

5道单选+5道多选+4道编程


一、单选题
  1. 在模拟丝绸之路商队行程时,需要判断骆驼当天的里程是否超过50里,若超过则骆驼需要休息。下列C++语句中正确的是( )。

    • A. if (distance > 50) rest = true;
    • B. if distance > 50 then rest = true;
    • C. if (distance > 50) { rest = true }
    • D. if distance > 50: rest = true;
  2. 为了存储丝绸图案中基本单元的重复次数(一个正整数),下列变量定义正确的是( )。

    • A. int repeat_time;
    • B. repeat_time int;
    • C. int repeat time;
    • D. repeat_time = int;
  3. 计算瓷器破损率时,破损率 = 破损瓷器数 / 总瓷器数。已知 brokentotalint 类型,若要得到精确的浮点数结果,下列表达式正确的是( )。

    • A. (double)broken / total
    • B. broken / total
    • C. broken * 1.0 / total
    • D. A和C都正确
  4. 驼队补给问题中,需要判断剩余水量是否小于剩余路程与每里耗水量的乘积。假设变量分别为 waterdistanceconsumePerLi,正确的条件表达式是( )。

    • A. if water < distance * consumePerLi then
    • B. if (water < distance * consumePerLi)
    • C. if water < distance * consumePerLi:
    • D. if (water < distance * consumePerLi);
  5. 在VR展示文物数字化过程中,需要遍历一维数组中的每个顶点坐标,下列正确的循环结构是( )。

    • A. for (int i = 0; i < 10; i++) { }
    • B. for i = 0 to 9
    • C. while i < 10
    • D. loop i = 0..9

二、多选题
  1. 在计算从长安到敦煌的行程总里程时,里程可能包含小数。适合存储里程的C++数据类型有( )。

    • A. int
    • B. float
    • C. double
    • D. char
  2. 关于骆驼载重分配的函数原型,下列语法正确的有( )。

    • A. void distributeLoad(int weight, int camelNum);
    • B. int distributeLoad(int weight);
    • C. distributeLoad(weight, camelNum);
    • D. float distributeLoad(int weight, int camelNum);
  3. 下列关于C++循环语句的说法中,正确的有( )。

    • A. for循环通常用于已知循环次数的情况
    • B. while循环在条件为假时可能一次也不执行
    • C. do-while循环至少执行一次循环体
    • D. 三种循环(forwhiledo-while)在功能上可以相互转换
  4. 在计算瓷器破损率时,以下哪些是C++中合法的浮点数常量表示( )。

    • A. 0.5
    • B. .5
    • C. 5.
    • D. 5
  5. 关于结构体的叙述,在C++中正确的有( )。

    • A. 结构体可以包含不同类型的数据成员
    • B. 结构体定义后可以像内置类型一样定义变量
    • C. 结构体变量在定义时可以同时进行初始化
    • D. 结构体内不能定义成员函数

三、编程题
编程题1:商队行程计算

背景 :一支商队从敦煌出发前往龟兹,记录了连续若干天每天行走的里程(正整数)。请计算总里程并求出平均里程(保留两位小数)。
输入格式

第一行一个整数 n( 1 ≤ n ≤ 7 1 \le n \le 7 1≤n≤7),表示记录的天数。

第二行 n 个正整数,表示每天的里程(单位:里)。
输出格式

第一行输出总里程。

第二行输出平均里程,保留两位小数。
样例输入

复制代码
3
120 135 98

样例输出

复制代码
353
117.67
编程题2:骆驼载重分配

背景 :有总重量为 W 斤的货物需要由骆驼运输,每头骆驼最多可载重200斤。请计算至少需要多少头骆驼。
输入格式

一个整数 W( 0 ≤ W ≤ 10 6 0 \le W \le 10^6 0≤W≤106)。
输出格式

一个整数,表示所需骆驼的最少数量。
提示 :如果 W = 0,输出0。
样例输入

复制代码
450

样例输出

复制代码
3
编程题3:丝绸图案重复

背景 :丝绸工匠设计了一个基本图案字符串 s(仅含小写字母),需要将其重复 k 次形成一条连续的纹样长卷。请输出重复后的完整图案。
输入格式

第一行一个字符串 s(长度 1 ≤ ∣ s ∣ ≤ 20 1 \le |s| \le 20 1≤∣s∣≤20)。

第二行一个整数 k( 1 ≤ k ≤ 10 1 \le k \le 10 1≤k≤10)。
输出格式

一行字符串,表示重复 k 次后的结果。
样例输入

复制代码
abc
3

样例输出

复制代码
abcabcabc
编程题4:文物修复路径规划

背景 :在敦煌石窟的数字化修复中,需要依次访问 n 个修复点,每个修复点用二维坐标 ( x i , y i ) (x_i, y_i) (xi,yi) 表示。工作人员从第1个点出发,按顺序访问所有点,最后返回第1个点。请计算总曼哈顿距离(即 ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1-x_2| + |y_1-y_2| ∣x1−x2∣+∣y1−y2∣ 之和)。
输入格式

第一行一个整数 n( 2 ≤ n ≤ 100 2 \le n \le 100 2≤n≤100)。

接下来 n 行,每行两个整数 x i , y i x_i, y_i xi,yi( ∣ x i ∣ , ∣ y i ∣ ≤ 10 4 |x_i|,|y_i| \le 10^4 ∣xi∣,∣yi∣≤104)。
输出格式

一个整数,表示总曼哈顿距离。
样例输入

复制代码
3
0 0
3 4
6 0

样例输出

复制代码
20

(解释:路径(0,0)->(3,4)=7, (3,4)->(6,0)=7, (6,0)->(0,0)=6, 总和20。)


参考答案

一、单选题
  1. A
  2. A
  3. D
  4. B
  5. A
二、多选题
  1. B, C
  2. A, B, D
  3. A, B, C, D
  4. A, B, C
  5. A, B, C
三、编程题参考代码
编程题1 参考代码
cpp 复制代码
#include <bits/stdc++.h>  
using namespace std;  

int main() {
    int n, sum = 0; // n:天数, sum:总里程,初始化为0
    
    cin >> n; // 输入记录的天数
    
    // 循环n次,读取每天的里程并累加
    for (int i = 1; i <= n; i++) {
        int mile;          // 定义变量存储当天的里程
        cin >> mile;       // 输入当天的里程
        sum += mile;       // 累加到总里程中
    }
    
    // 输出总里程
    cout << sum << endl;
    
    // 输出平均里程,保留两位小数
    // fixed: 使用固定小数点格式
    // setprecision(2): 设置精度为2位小数
    // sum*1.0: 将整数转换为浮点数,保证除法得到小数结果
    cout << fixed << setprecision(2) << sum*1.0 / n << endl;
    
    return 0;
}
编程题2 参考代码
cpp 复制代码
#include <bits/stdc++.h>  
using namespace std;      

int main() {
    int w; // 定义变量w,存储货物总重量(单位:斤)
    cin >> w;   // 输入货物总重量
    
    // 特殊情况处理:如果没有货物,不需要任何骆驼
    if (w == 0) {
        cout << 0 << endl; // 输出0头骆驼
    }
    else {
        // 计算至少需要的骆驼数量
        // w / 200: 每头骆驼最多载重200斤,计算能满载的骆驼数量
        int cnt = w / 200;
        
        // 如果有剩余货物(即总重量不能被200整除),
        // 则需要额外增加一头骆驼来运输剩余货物
        if (w % 200 != 0) {
            cnt++;         // 增加一头骆驼
        }
        
        cout << cnt << endl; // 输出所需骆驼的最少数量
    }
    
    return 0;              // 程序正常结束
}
编程题3 参考代码
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std; 

int main() {
    string s;  // 定义字符串s,存储基本图案
    int k;  // 定义整数k,存储重复次数
    
    cin >> s >> k;// 输入基本图案和重复次数
    
    string result = ""; // 定义空字符串result,用于存储最终结果
    
    // 循环k次,每次将基本图案s拼接到result后面
    for (int i = 1; i <= k; i++) {
        result += s;       // 使用字符串拼接操作,将s添加到result末尾
    }
    
    cout << result << endl; // 输出重复k次后的完整图案
    
    return 0;              // 程序正常结束
}
编程题4 参考代码
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std; 

int n;   // 修复点的数量
int x[110], y[110];   // 存储每个修复点的坐标,下标从1开始使用

int main() {
    cin >> n; // 输入修复点的个数
    
    // 循环输入n个修复点的坐标
    // 注意:这里从下标1开始存储,这样第1个点存储在x[1]、y[1]中
    for (int i = 1; i <= n; i++) {
        cin >> x[i] >> y[i];
    }
    
    long long dist = 0;    // 定义总曼哈顿距离,使用long long类型
                           // 防止计算过程中可能出现的整数溢出
    
    // 计算路径距离:依次经过各个修复点
    // 循环计算从第1个点到第2个点、第2个点到第3个点...
    // 直到第(n-1)个点到第n个点的距离
    for (int i = 1; i < n; i++) {
        // 曼哈顿距离 = |x坐标差| + |y坐标差|
        dist += abs(x[i] - x[i+1]) + abs(y[i] - y[i+1]);
    }
    
    // 计算返回距离:从最后一个点返回到第一个点
    // 因为要形成闭合路径,所以需要加上从第n个点到第1个点的曼哈顿距离
    dist += abs(x[n] - x[1]) + abs(y[n] - y[1]);
    
    cout << dist << endl;  // 输出总曼哈顿距离
    
    return 0;              // 程序正常结束
}

关注老师的专栏,查看完整版全国青少年信息素养大赛C++备赛资料(初赛+复赛):

https://blog.csdn.net/weixin_66461496/category_12969975.html

各种学习资料,助力大家一站式学习和提升!!!

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 点击跳转

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信奥赛冲刺一等奖有效刷题题解:

CSP信奥赛C++初赛及复赛高频考点真题解析(持续更新): 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;
}
相关推荐
王老师青少年编程7 小时前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练2:文末付答案)
答案·试卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项·模拟训练
逸尘谈PM11 天前
智能体框架对比:OpenClaw、LangChain、AutoGPT、CrewAI 深度对比
人工智能·ai·langchain·职场·2026年
王老师青少年编程18 天前
2025年3月GESP真题及题解(C++七级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·信奥赛·七级
Freshman小白3 个月前
《智能制造系统》网课答案
学习·答案·网课答案
Freshman小白3 个月前
《现代电力电子技术及应用》2025网课答案
学习·答案·网课答案
Freshman小白3 个月前
《人工智能与创新》网课答案2025
人工智能·学习·答案·网课答案
噜~噜~噜~4 个月前
雨课堂科技信息检索与论文写作专题讲座期末
期末·答案·雨课堂·科技信息检索与论文写作专题讲座
Freshman小白4 个月前
《生活英语读写》2025学堂在线网课答案(全部作业题)
爬虫·学习·答案
Freshman小白4 个月前
《英文科技论文写作与学术报告》网课答案(雨课堂、学堂在线...)
网络·学习·答案