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

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

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


一、单选题
  1. 在计算驼队行进时间时,已知里程 distance(整数)和速度 speed(浮点数),下列选项中能正确计算所需时间(小时,浮点数)的是( )。

    A. int time = distance / speed;

    B. float time = distance / speed;

    C. int time = (float)distance / speed;

    D. 上都不对

  2. 在丝绸纺织图案中,需要判断一个整数 pattern 是否为偶数。以下条件表达式正确的是( )。

    A. pattern % 2 = 0

    B. pattern // 2 == 0

    C. pattern % 2 == 0

    D. pattern / 2 == 0

  3. 敦煌壁画修复中,使用一维数组存储8个佛像的修复优先级,数组下标从0开始。要访问第5个佛像的优先级,正确的写法是( )。

    A. priority[5]

    B. priority[4]

    C. priority(5)

    D. priority[6]

  4. 商队从敦煌到撒马尔罕,途中需要停留补给的次数 stop 满足:当剩余水量 water 小于 100 且距离下个水源 dist 大于 50 时需要停留。下列逻辑表达式正确的是( )。

    A. water < 100 && dist > 50

    B. water < 100 || dist > 50

    C. water < 100 & dist > 50

    D. water < 100 and dist > 50

  5. 在虚拟现实中渲染丝路场景,需要定义一个常量表示大漠风沙速度(固定值3.5)。下列定义正确的是( )。

    A. const double SAND_SPEED = 3.5;

    B. const int SAND_SPEED = 3.5;

    C. #define SAND_SPEED 3.5

    D. 以上都不正确


二、多选题
  1. 关于C++的 if-else 语句,下列描述正确的有( )。

    A. if 后的条件表达式必须用圆括号括起来

    B. else 子句可以单独使用而不需要前面的 if

    C. 多个 else if 可以连续使用

    D. if 语句中可以嵌套另一个 if 语句

  2. 在计算驼队总载重时,使用以下哪些C++循环结构可以实现对数组 load[100] 的所有元素求和?( )

    A. for (int i=0; i<100; i++) sum += load[i];

    B. int i=0; while(i<100) { sum+=load[i]; i++; }

    C. int i=0; do { sum+=load[i]; i++; } while(i<100);

    D. foreach(int x in load) sum += x;

  3. 定义函数 int travelTime(int distance, int speed){ },下列选项中正确的有( )。

    A. 函数的名字是:travelTime

    B. 函数的参数有2个

    C. 函数没有返回值

    D. 函数名字不符合要求

  4. 丝路货物运输中,需要将重量(斤)从整数转换为浮点数以便计算运费。下列类型转换正确的有( )。

    A. (float)weight

    B. float(weight)

    C. (double)weight

    D. weight * 1.0

  5. 关于C++数组,下列说法正确的有( )。

    A. 数组下标从0开始

    B. 定义数组时必须指定长度,且长度必须是常量表达式

    C. 数组名代表数组首元素的地址

    D. 可以使用 = 直接复制另一个数组的全部元素,例如 arr2 = arr1;


三、编程题
编程题1:驼队速度计算

背景 :商队从敦煌到楼兰,前半程速度为 v1 里/小时,后半程速度为 v2 里/小时。总路程为 S 里,且前半程和后半程路程相等。请计算平均速度(总路程/总时间),结果保留一位小数。
输入格式

一行三个正整数,依次为 v1, v2, S1 ≤ v1,v2 ≤ 1002 ≤ S ≤ 2000S 为偶数)。
输出格式

一个浮点数,表示平均速度,保留一位小数。
样例输入

复制代码
10 15 120

样例输出

复制代码
12.0

(解释:半程60里,时间前半60/10=6h,后半60/15=4h,总时间10h,平均速度120/10=12.0)

编程题2:丝绸图案对称性判断

背景 :丝绸图案用一个字符串表示(仅含小写字母)。判断该字符串是否为"回文"(正读反读相同)。
输入格式

一行一个字符串 s(长度 1 ≤ |s| ≤ 100)。
输出格式

如果字符串是回文,输出 "Yes",否则输出 "No"
样例输入

复制代码
silkklis

样例输出

复制代码
Yes
编程题3:文物图像灰度化

背景 :在文物数字化中,一张彩色图像用二维数组表示每个像素的RGB值。现需要将彩色图像转为灰度图,灰度值计算公式:Gray = 0.299*R + 0.587*G + 0.114*B。输入一个 nm 列的图像,每行三个整数 R,G,B(0~255)。输出灰度化后的每个像素的整数值(四舍五入取整)。
输入格式

第一行两个整数 n, m1 ≤ n,m ≤ 20)。

接下来 n 行,每行 m 组三个整数,表示该行每个像素的RGB值。
输出格式

输出 n 行,每行 m 个整数,表示灰度值,每个整数后跟一个空格。
样例输入

复制代码
2 2
255 0 0   0 255 0
0 0 255   128 128 128

样例输出

复制代码
76 150
29 128

(解释:第一行第一列:0.299255≈76.245→四舍五入76;第一行第二列:0.587 255≈149.685→150;第二行第一列:0.114255≈29.07→29;第二行第二列:0.299 128+0.587128+0.114128=128.0→128)

编程题4:丝路驿站最短路径选择

背景 :从敦煌到长安有多条线路,每条线路的驿站数量不同。现有 k 条线路,每条线路给出驿站数量 n i n_i ni 以及该线路上每相邻两个驿站之间的距离(正整数)。请找出总距离最短的那条线路的编号(从1开始编号),并输出其总距离。如果有多个最短线路,输出编号最小的。
输入格式

第一行一个整数 k1 ≤ k ≤ 10)。

接下来依次输入每条线路:先输入一个整数 n i n_i ni( 2 ≤ n i ≤ 50 2 ≤ n_i ≤ 50 2≤ni≤50),表示该线路上的驿站数量;然后输入 n i − 1 n_i - 1 ni−1 个整数,表示相邻驿站之间的距离。
输出格式

一行,输出两个整数:最短线路的编号和该线路的总距离,中间用空格隔开。
样例输入

复制代码
3
4 10 20 30
3 15 25
5 5 5 5 5

样例输出

复制代码
3 20

(解释:线路1总距离60,线路2总距离40,线路3总距离20,最短为线路3,距离20)


参考答案

一、单选题
  1. B
  2. C
  3. B
  4. A
  5. A
二、多选题
  1. A, C, D(B错误,else不能单独使用)
  2. A, B, C(D在标准C++中不存在)
  3. A, B(C错误:函数的返回值类型为int,所以有返回值;D错误:函数命名符合规范)
  4. A, B, C, D(全部正确)
  5. A, B, C(D错误,数组不能直接复制)
三、编程题参考代码
编程题1
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;   

int main() {
    int v1, v2, S;  // 定义整数变量:前半程速度,后半程速度,总路程
    cin >> v1 >> v2 >> S; // 从输入读取三个正整数

    // 计算半程距离,S为偶数,所以除以2.0得到浮点数,避免整数除法截断
    double half = S / 2.0;

    // 计算前半程所需时间 (时间 = 距离 / 速度)
    double time1 = half / v1;
    // 计算后半程所需时间
    double time2 = half / v2;

    // 总平均速度 = 总路程 / 总时间
    double avg = S / (time1 + time2);

    // 输出结果,fixed表示使用固定小数点表示法,setprecision(1)表示保留1位小数
    cout << fixed << setprecision(1) << avg << endl;

    return 0; 
}
编程题2
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;   

int main() {
    string s; // 定义字符串变量,用于存储输入的图案字符串
    cin >> s; // 读取字符串

    bool ok = true;      // 标志位,初始假设字符串是回文
    int len = s.length(); // 获取字符串长度

    // 只需要比较前半部分和后半部分对应的字符
    // 循环到 len/2 即可,避免重复比较
    for (int i = 0; i < len / 2; ++i) {
        // 如果第i个字符 不等于 倒数第i个字符
        if (s[i] != s[len - 1 - i]) {
            ok = false;   // 发现不对称,标记为false
            break;        // 无需继续比较,跳出循环
        }
    }

    // 根据结果输出"Yes"或"No"
    // 条件运算符 ?: 根据ok的值返回对应的字符串
    cout << (ok ? "Yes" : "No") << endl;

    return 0;
}
编程题3
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;  

int main() {
    int n, m;   // n: 图像的行数,m: 图像的列数
    cin >> n >> m;   // 读取行数和列数

    // 循环处理每一行
    for (int i = 0; i < n; ++i) {
        // 循环处理当前行的每一个像素
        for (int j = 0; j < m; ++j) {
            int r, g, b;   // 定义整型变量,存储红、绿、蓝三个颜色分量
            cin >> r >> g >> b; // 读取当前像素的RGB值

            // 根据灰度公式计算灰度值,结果是一个浮点数
            // round() 函数用于四舍五入取整,返回double类型
            int gray = round(0.299 * r + 0.587 * g + 0.114 * b);

            // 输出灰度值
            cout << gray;
            // 如果不是当前行的最后一个像素,则输出一个空格作为分隔
            if (j < m - 1) cout << " ";
        }
        // 当前行处理完毕,输出换行
        cout << endl;
    }
    return 0;
}
编程题4
cpp 复制代码
#include <bits/stdc++.h> 
using namespace std;   

int main() {
    int k;               // 线路的条数
    cin >> k;            // 读取线路条数

    // 初始化最佳线路的信息
    int bestIdx = 1;     // 最佳线路编号,初始设为第一条线路
    int bestDist = INT_MAX;;    // 最佳线路的总距离,初始为无穷大

    // 循环处理每一条线路,i从1开始,方便记录线路编号
    for (int i = 1; i <= k; ++i) {
        int n;           // 当前线路的驿站数量
        cin >> n;        // 读取驿站数量

        int total = 0;   // 累加当前线路的总距离,初始为0

        // 一条线路有n个驿站,则有 n-1 段距离
        for (int j = 1; j <= n - 1; ++j) {
            int d;       // 相邻驿站之间的距离
            cin >> d;    // 读取一段距离
            total += d;  // 累加到总距离中
        }

        // 判断是否为更优的线路
        // 当前线路的总距离小于已记录的最佳距离
        if (total < bestDist) {
            bestDist = total; // 更新最佳距离
            bestIdx = i;      // 更新最佳线路编号
        }
        // 注意:题目要求如果有多个最短线路,输出编号最小的。
        // 这里使用 "total < bestDist" 而不是 "<=" 确保了当距离相同时,
        // 不会用后面的线路覆盖前面的,因此编号最小的会被保留。
    }

    // 输出结果:最佳线路编号和该线路的总距离,中间用空格隔开
    cout << bestIdx << " " << bestDist << 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;
}
相关推荐
逸尘谈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 个月前
《英文科技论文写作与学术报告》网课答案(雨课堂、学堂在线...)
网络·学习·答案
Freshman小白4 个月前
《如何写好科研论文》雨课堂网课答案2025
学习·答案·网课答案