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

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

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


一、单选题
  1. 在记录丝绸交易的金额时,需要保留两位小数。下列输出语句能够正确输出变量 money(浮点数)并保留两位小数的是( )。

    A. cout << money;

    B. printf("%.1f", money);

    C. cout << setprecision(2) << money;

    D. cout << fixed << setprecision(2) << money;

  2. 商队需要判断是否遇到强盗:如果遇到强盗标记 robbertrue 或者当前货物价值 value 大于1000两且夜间 nighttrue,则发出警报。下列表达式正确的是( )。

    A. robber || (value > 1000 && night)

    B. (robber || value > 1000) && night

    C. robber && value > 1000 || night

    D. robber || value > 1000 || night

  3. 有数组 int horsePower[10] = {3,5,7,9,11,13,15,17,19,21};,要输出第6个元素(从1开始计数),正确的语句是( )。

    A. cout << horsePower[6];

    B. cout << horsePower[5];

    C. cout << horsePower[7];

    D. cout << horsePower[4];

  4. 以下哪个循环会无限执行(死循环)?( )

    A. for(int i=0; i<10; i++);

    B. int i=0; while(i<10) { i++; }

    C. int i=0; do { i++; } while(i<10);

    D. int i=0; while(i>=0) { i++; }

  5. 根据骆驼的负载重量(整数 load)决定是否超载:若负载大于200斤则超载,否则正常。下列 switch 语句能实现该逻辑的是( )。

    A. switch(load) { case load<200: ... break; default: ... }

    B. switch(load) { case load>200: ... break; default: ... }

    C. switch(load / 200) { case 0: ... break; default: ... }

    D. 全部错误


二、多选题
  1. 关于C++中的自增自减运算符,正确的有( )。

    A. i++ 先使用i的值,然后i加1

    B. ++i 先使i加1,再使用新值

    C. i++++i 在独立语句中效果相同

    D. 自增运算符只能用于整型变量

  2. 以下哪些是合法的C++语句(假设变量已定义)?( )

    A. if (x > 0) y = 1; else y = 0;

    B. if (x > 0) y = 1;

    C. if (x > 0) y = 1; else;

    D. if (x > 0); else y = 0;

  3. 关于 breakcontinue 在循环中的使用,正确的有( )。

    A. break 跳出当前最内层循环

    B. continue 结束本次循环,进入下一次迭代

    C. 在 for 循环中,continue 后会执行循环变量的增量表达式

    D. 在 while 循环中,continue 前如果没有更新条件变量,可能造成死循环

  4. 关于数组 int a[5] = {1,2,3};,以下访问结果正确的有( )。

    A. a[0] 的值是1

    B. a[2] 的值是3

    C. a[3] 的值是0

    D. a[5] 的值是0

  5. 以下哪些是C++中的算术运算符?( )

    A. +

    B. -

    C. *

    D. /


三、编程题
编程题1:骆驼年龄总和

背景 :一队骆驼的年龄(整数,单位:岁)已知。请计算所有骆驼的年龄总和,并输出平均年龄(保留一位小数)。
输入格式

第一行一个整数 n1 ≤ n ≤ 50),表示骆驼数量。

第二行 n 个整数,表示每峰骆驼的年龄。
输出格式

第一行输出年龄总和。

第二行输出平均年龄,保留一位小数。
样例输入

复制代码
5
3 5 4 6 2

样例输出

复制代码
20
4.0
编程题2:货物正负数统计

背景 :丝路商人记录了若干笔交易的盈亏(整数,正数表示盈利,负数表示亏损,0表示持平)。请统计盈利(大于0)、亏损(小于0)和持平(等于0)的笔数。
输入格式

第一行一个整数 n1 ≤ n ≤ 100)。

第二行 n 个整数,表示每笔交易的盈亏。
输出格式

三个整数,依次表示盈利笔数、亏损笔数、持平笔数,中间用空格隔开。
样例输入

复制代码
7
10 -5 0 8 -3 0 12

样例输出

复制代码
3 2 2
编程题3:丝绸图案中每个字母的出现次数

背景 :丝绸图案用一个只含小写字母的字符串表示。请统计每个字母('a'~'z')出现的次数,并输出出现次数不为0的字母及其次数,按字母顺序输出。
输入格式

一行字符串 s,长度 1 ≤ |s| ≤ 200,只含小写字母。
输出格式

若干行,每行一个字母和一个整数,中间用空格隔开,按字母顺序输出。
样例输入

复制代码
silkroad

样例输出

复制代码
a 1
d 1
i 1
k 1
l 1
o 1
r 1
s 1
编程题4:丝路驿站距离排序

背景 :丝绸之路沿途有 n 个驿站,已知每个驿站到长安的距离(整数)。请将这些距离从小到大排序,并输出排序后的结果。
输入格式

第一行一个整数 n1 ≤ n ≤ 100)。

第二行 n 个整数,表示每个驿站到长安的距离(里)。
输出格式

一行 n 个整数,表示升序排序后的距离,每两个数之间用一个空格隔开。
样例输入

复制代码
6
120 80 150 60 200 90

样例输出

复制代码
60 80 90 120 150 200

参考答案

一、单选题
  1. D(A不控制精度;B是printf方式,但精度设置为1,错误;C缺少fixed,会按有效数字而非小数点后两位;D正确)
  2. A(根据题意:强盗 或者 (价值>1000且夜间)。A正确;B表示(强盗或价值>1000)且夜间;C由于优先级 && 高于 ||,等价于 (robber && value>1000) || night;D全是||,没有&&。选A。
  3. B(第6个元素下标5)
  4. D(i从0开始,i>=0永远为真,i++导致无限增长,最终可能溢出,但循环条件永远真,死循环)
  5. D(A和B中case后不能跟关系表达式;C中使用整除,load<200时商0,else非0,default处理非0,正确;)
二、多选题
  1. A, B, C(D错误,自增运算符也可用于迭代器、指针等)
  2. A, B, C, D(全部合法,D中if后空语句,else y=0;也是合法的)
  3. A, B, C, D(全部正确)
  4. A, B, C(D越界未定义,不算正确)
  5. A, B, C, D(都是算术运算符)
三、编程题参考代码
编程题1
cpp 复制代码
#include<bits/stdc++.h> 
using namespace std;  

int main() {
    int n; // n:骆驼数量
    cin >> n; // 读入数量

    int sum = 0;  // sum:年龄总和
    int a; // a:临时存储每峰骆驼的年龄

    // 循环读入每峰骆驼的年龄并累加
    for(int i = 1; i <= n; i++) {
        cin >> a;
        sum += a; // 累加年龄
    }

    // 输出年龄总和
    cout << sum << endl;

    // 输出平均年龄,保留一位小数
    // 方式1:使用 printf 格式化输出
    printf("%.1f\n", sum * 1.0 / n);

    // 方式2:使用 cout 控制精度
    // cout << fixed << setprecision(1) << sum*1.0 / n << endl;

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

int main() {
    int n; //交易笔数
    cin >> n; // 读入笔数

    int a = 0, b = 0, c = 0;  // a:盈利笔数, b:亏损笔数, c:持平笔数
    for(int i = 1; i <= n; i++) {
        int x; // x:当前交易的盈亏值
        cin >> x; // 读入一个整数
        if(x > 0) ++a; // 大于0,盈利笔数加1
        else if(x < 0) ++b; // 小于0,亏损笔数加1
        else ++c; // 等于0,持平笔数加1
    }

    cout << a << " " << b << " " << c << endl; // 按要求输出三个统计值
    return 0;
}
编程题3
cpp 复制代码
#include<bits/stdc++.h> 
using namespace std; 

int main() {
    string s; 
    cin >> s; // 读入字符串

    int cnt[26] = {0}; // cnt[0]对应'a',cnt[1]对应'b'... 初始化为0

    // 遍历字符串每个字符
    for(char ch : s) {
        cnt[ch - 'a']++;  // 将字符映射到0~25,对应计数器加1
    }

    // 按字母顺序输出出现次数不为0的字母及其次数
    for(int i = 0; i < 26; ++i) {
        if(cnt[i] != 0) {
            cout << char('a' + i) << " " << cnt[i] << endl;  // 输出字母和次数
        }
    }

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

int main() {
    int n; // 驿站数量
    cin >> n; // 读入数量

    int a[110]; // 存储距离的数组(最大100+10)
    for(int i = 1; i <= n; i++) {
        cin >> a[i]; // 读入每个距离
    }

    sort(a+1, a + n + 1); // 使用sort函数升序排序

    for(int i = 1; i <= n; i++) {
        cout << a[i] << " ";   // 输出当前距离
    }

    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;
}
相关推荐
王老师青少年编程10 天前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟题5:文末附答案)
答案·模拟卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项
王老师青少年编程10 天前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项初赛模拟题4:文末附答案)
答案·初赛·模拟卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项
王老师青少年编程17 天前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练1:文末付答案)
答案·试卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项·模拟训练
王老师青少年编程17 天前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练2:文末付答案)
答案·试卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项·模拟训练
逸尘谈PM1 个月前
智能体框架对比:OpenClaw、LangChain、AutoGPT、CrewAI 深度对比
人工智能·ai·langchain·职场·2026年
王老师青少年编程1 个月前
2025年3月GESP真题及题解(C++七级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·信奥赛·七级
Freshman小白3 个月前
《智能制造系统》网课答案
学习·答案·网课答案
Freshman小白4 个月前
《现代电力电子技术及应用》2025网课答案
学习·答案·网课答案
Freshman小白4 个月前
《人工智能与创新》网课答案2025
人工智能·学习·答案·网课答案