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

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

一、单选题
  1. 在C++程序中,主函数是程序的入口,其返回值类型通常是( )。

    A. void

    B. int

    C. double

    D. char

  2. 丝绸之路上,一只骆驼的最大载重量是250千克,需要存储该值并参与运算。下列变量定义正确的是( )。

    A. int 骆驼载重 = 250;

    B. float load-camel = 250.0;

    C. int load_camel = 250;

    D. 250 = load;

  3. 一支商队从长安出发前往敦煌,前3天每天行进30公里,后4天每天行进25公里。以下代码段能正确计算总路程的是( )。

    A. int s = 0; for(int i=1;i<=3;i++) s+=30; for(int i=1;i<=4;i++) s+=25;

    B. int s = 30*3 + 25*4;

    C. int s = 0; for(int i=0;i<3;i++) s=s+30; for(int i=0;i<4;i++) s=s+25;

    D. 以上都是

  4. 某批瓷器总共有N件,运输过程中破损了M件,破损率计算公式为(M/N)×100%。若用C++计算破损率(得到整数百分比),已知M和N是整型变量,以下哪个表达式能正确得到整数百分比?( )

    A. M / N * 100

    B. (double)M / N * 100

    C. M * 100 / N

    D. (int)(M * 100 / N)

  5. 驼队携带了300升水,每天消耗23升水,最多能支撑多少天?下面代码计算正确的是( )。

    A. int days = 300 / 23;

    B. int days = 300 % 23;

    C. double days = 300 / 23;

    D. double days = 300.0 / 23;

  6. 丝绸服饰图案设计,一个基本单元宽度为5个像素,要判断横坐标x(从0开始)是否位于每个基本单元的第3个像素位置(即相对位置索引为2),应使用的表达式是( )。

    A. x % 5 == 2

    B. x / 5 == 2

    C. x % 2 == 5

    D. x / 2 == 5

  7. 在文物数字化过程中,使用二维数组int mural[10][10];存储敦煌壁画10×10的像素灰度值,要访问第5行第3列(行和列均从0开始计数)的像素,正确的写法是( )。

    A. mural[5][3]

    B. mural[4][2]

    C. mural[3][5]

    D. mural[2][4]

  8. 从楼兰到和田有两条路线:路线A需5天,路线B需7天。比较天数并输出较短路线名称。以下代码正确的是( )。

    A. if(5<7) cout<<"A"; else cout<<"B";

    B. int a=5,b=7; if(a<b) cout<<"A"; else cout<<"B";

    C. int a=5,b=7; if(a<b) cout<<"A"; else if(a>=b) cout<<"B";

    D. 以上都正确

  9. 阅读以下代码:

    cpp 复制代码
    int num = 5;
    int result = num++ * 2;
    cout << result << "," << num;

    输出结果是( )。

    A. 10,5

    B. 10,6

    C. 12,6

    D. 12,5

  10. 骆驼队有6只骆驼,载重量分别为{210,190,230,175,200,215},要计算总载重量,以下代码正确的是( )。

    A.

    cpp 复制代码
    int weight[6]={210,190,230,175,200,215}; 
    int sum=0; 
    for(int i=1;i<=6;i++) sum+=weight[i];

    B.

    cpp 复制代码
    int weight[6]={210,190,230,175,200,215}; 
    int sum=0; 
    for(int i=0;i<6;i++) sum+=weight[i];

    C.

    cpp 复制代码
    int weight[6]={210,190,230,175,200,215}; 
    int sum=0; 
    for(int i=0;i<=6;i++) sum+=weight[i];

    D. 数组定义错误

  11. 编写函数判断给定年份是否为闰年(能被4整除且不能被100整除,或者能被400整除),用于分析丝绸之路历史年份。以下函数原型正确的是( )。

    A. bool isLeap(int year){ return (year%4==0 && year%100!=0) || (year%400==0); }

    B. int isLeap(int year){ if(year%400==0) return 1; else if(year%4==0 && year%100!=0) return 1; else return 0; }

    C. bool isLeap(int year){ return (year%4==0) && (year%100!=0) || (year%400==0); }

    D. 以上都正确

  12. 驼队在沙漠中遇到不同编号的绿洲,使用switch语句根据绿洲编号分配补给:1号增加30升水,2号增加50升,3号增加20升,其他编号不增加。以下switch结构正确的是( )。

    A.

    cpp 复制代码
    switch(num){
        case 1: water+=30; break; 
        case 2: water+=50; break; 
        case 3: water+=20; break; 
        default: break; 
    }

    B.

    cpp 复制代码
    switch(num){ 
        case 1: water+=30; 
        case 2: water+=50; 
        case 3: water+=20; 
        default: ; 
    }

    C.

    cpp 复制代码
     switch num{ 
         case 1: water+=30; 
         case 2: water+=50; 
         case 3: water+=20; 
     }

    D.

    cpp 复制代码
     switch(num){ 
         case 1: water+=30;
         case 2: water+=50;  
         case 3: water+=20; break; 
     }

  1. 模拟丝绸之路上织锦图案,使用嵌套循环输出一个3行5列的星形矩阵,每行星号之间用空格隔开。正确的代码段是( )。

    A.

    cpp 复制代码
    for(int i=0;i<3;i++){ 
        for(int j=0;j<5;j++) 
            cout<<"* "; 
        cout<<endl; 
    }

    B.

    cpp 复制代码
    for(int i=1;i<=3;i++){ 
        for(int j=1;j<=5;j++) 
            cout<<"*"; 
        cout<<endl; 
    }

    C.

    cpp 复制代码
     for(int i=0;i<3;i++){ 
         for(int j=0;j<5;j++) 
             cout<<"*"; 
         cout<<endl; 
     }

    D.

    cpp 复制代码
     for(int i=0;i<3;i++){ 
         for(int j=0;j<=5;j++) 
             cout<<"*"<<' '; 
         cout<<endl; 
     }
  2. 存储丝绸之路上的城市名称如"长安"、"敦煌"、"楼兰",要判断两个字符串是否相等,使用C++ string类型,正确的是( )。

    A. if(str1 == str2)

    B. if(strcmp(str1,str2)==0)

    C. if(str1.equals(str2))

    D. if(str1 = str2)

  3. 判断骆驼是否适合运输的条件为:年龄在3到10岁之间(包含边界)且负重能力大于150千克。设变量age和load,正确的条件表达式是( )。

    A. age>=3 && age<=10 && load>150

    B. age>=3 || age<=10 && load>150

    C. age>=3 && age<=10 || load>150

    D. age>3 && age<10 && load>150

二、判断题
  1. C++中,数组的下标从1开始。( )
  2. 在switch语句中,每个case分支后面都必须加上break语句,否则会导致语法错误。( )
  3. for循环的循环体如果包含多条语句,必须使用花括号括起来。( )
  4. 浮点数的相等比较可以直接使用==运算符,不会出现精度问题。( )
  5. 在函数内部定义的局部变量,其作用域仅限于该函数内部。( )

参考答案与解析
单选题解析
  1. B

    C++标准规定main函数返回值类型为int,用于向操作系统返回程序状态。

  2. C

    变量名只能由字母、数字、下划线组成且不能以数字开头。A使用了中文字符(非标准),B包含非法字符"-",D赋值方向错误。C符合命名规范。

  3. D

    A和C通过循环累加正确计算总路程;B直接使用算术表达式也正确。三种方法均可行。

  4. C

    整数除法会截断,应先乘后除:M*100/N得到整数百分比(向下取整)。A因先除后乘结果通常为0;B得到浮点数但未转为整数;D与C效果相同但多了不必要的类型转换,C更简洁常用。

  5. A

    整数除法自动舍弃小数部分,300/23得13,即最多支撑13天。B得到余数;C、D定义类型为double,不符合天数应为整数的语义。

  6. A

    取模运算x % 5得到在单元内的偏移量,偏移为2时条件成立。

  7. B

    行和列均从0开始,第5行下标为4,第3列下标为2,故访问mural[4][2]

  8. D

    A直接比较字面量正确;B和C均通过变量比较,逻辑正确且输出"A"。三个选项均能正确输出结果。

  9. B
    num++先使用原值5参与乘法得到10,然后num自增为6,故输出10,6

  10. B

    数组下标范围0~5,循环条件i<6正确遍历所有元素。A从1开始,漏加第一个且越界;C的i<=6越界访问。

  11. D

    A和C逻辑等价且返回bool类型;B使用int返回0/1,在C++中可隐式转换为bool。三个函数均正确实现闰年判断。

  12. A

    A语法完整,使用break避免穿透,default处理其他情况。B缺少break会导致执行多个case;C语法错误,switch后应跟圆括号;D前两个case缺少break会导致执行多个case。

  13. A

    A每行输出"* "共5次后换行,星号间有空格。B和C星号间无空格;D每行打印了6个*。

  14. A

    C++的string类重载了==运算符,可直接比较内容。B适用于C风格字符串且需头文件,不能直接用于string对象;C是Java语法;D为赋值操作。

  15. A

    三个条件必须同时满足:年龄在3~10之间(含边界)且负重>150,用逻辑与&&连接。

判断题解析
  1. ×

    C++数组下标从0开始。

  2. ×

    缺少break不会导致语法错误,但会发生"穿透",继续执行后续case中的代码。

  3. 若循环体包含多条语句,必须用花括号括起来形成复合语句;单条语句可省略。

  4. ×

    浮点数存储有精度误差,直接使用==比较可能因微小误差导致结果错误,通常应判断差值是否小于一个极小值。

  5. 局部变量在函数内部定义,其作用域从定义处开始到函数结束,外部无法访问。

关注老师的专栏,查看完整版全国青少年信息素养大赛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++赛项模拟训练1:文末付答案)
答案·试卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项·模拟训练
王老师青少年编程7 天前
2026年全国青少年信息素养大赛算法应用主题赛(C++赛项模拟训练2:文末付答案)
答案·试卷·2026年·青少年信息素养大赛·算法应用主题赛·c++赛项·模拟训练
逸尘谈PM18 天前
智能体框架对比:OpenClaw、LangChain、AutoGPT、CrewAI 深度对比
人工智能·ai·langchain·职场·2026年
王老师青少年编程25 天前
2025年3月GESP真题及题解(C++七级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·信奥赛·七级
王老师青少年编程1 个月前
2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第2题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
王老师青少年编程2 个月前
2020年信奥赛C++提高组csp-s初赛真题及答案解析(完善程序第1题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
王老师青少年编程2 个月前
2020年信奥赛C++提高组csp-s初赛真题及答案解析(阅读程序第1题)
c++·题解·真题·初赛·信奥赛·csp-s·提高组
王老师青少年编程2 个月前
2020年信奥赛C++提高组csp-s初赛真题及答案解析(选择题11-15)
c++·题解·真题·初赛·信奥赛·csp-s·提高组