#2902. 2026全国信息素养大赛算法应用主题赛:C++丝路新城卷(二)

2026全国信息素养大赛算法应用主题赛:C++丝路新城卷(二)

一、单项选择题(每题 2 分)

1. 在“思路新城”的环境监测系统中,需要定义一个变量来存储某个监测点的PM2.5浓度(例如45.7)。以下哪种数据类型最合适?{{ select(1) }}

  • int
  • string
  • double
  • char

2. 新城的智能预警系统需要根据PM2.5浓度pmLevel发布警报。如果浓度超过ALERT_THRESHOLD,则发布橙色警报。以下哪个C++代码片段能最好地实现这个决策逻辑?{{ select(2) }}

  • if (pmLevel = ALERT_THRESHOLD) { publishAlert("Orange"); }
  • if (pmLevel > ALERT_THRESHOLD) { publishAlert("Orange"); }
  • while (pmLevel > ALERT_THRESHOLD) { publishAlert("Orange"); }
  • for (pmLevel = ALERT_THRESHOLD; pmLevel > 0; pmLevel--) { publishAlert("Orange"); }

3. 为了分析“思路新城”中心区一天内的平均噪音水平,监测设备每小时记录一次数据,得到一个数组double noiseData[24] = {...};。以下哪段代码能正确计算出这24小时的总噪音值?{{ select(3) }}

  • double totalNoise = noiseData / 24;
  • double totalNoise = 0; for(int i = 0; i < 24; i++) { totalNoise += noiseData[i]; }
  • double totalNoise = noiseData[0] + noiseData[23];
  • double totalNoise = noiseData[24];

4. “思路新城”部署了20个水质监测站,需要定期读取每个站点的数据。为了高效地为每一个站点执行“读取数据”的操作,最合适的编程结构是:{{ select(4) }}

  • if语句
  • for循环
  • cout语句
  • cin语句

5. 在一个用于控制空气净化装置的程序中,bool deviceActive 是一个布尔变量。当它的值为true时,设备运行;为false时,设备停止。为了让设备切换到与当前状态相反的状态,应该使用以下哪个表达式?{{ select(5) }}

  • ~deviceActive
  • not deviceActive
  • deviceActive * (-1)
  • !deviceActive

6. 在编写环境监测系统的C++程序时,你需要定义一个变量来存储监测站的编号。以下哪个选项是合法的C++标识符(变量名)?{{ select(6) }}

  • station-id
  • 2_station
  • stationID_01
  • return

8. 在“思路新城”的环境数据记录中,需要存储一个监测点的完整信息,包括位置坐标(x, y)、PM2.5、PM10、噪音水平等多个指标。在C++中,以下哪种方式最适合组织这种包含多种不同类型属性的数据?{{ select(8) }}

  • 使用多个独立的int,double变量
  • 使用一个vector<double>
  • 定义一个结构体 (struct)
  • 使用set<double>

9. 环境评估系统需要同时满足两个条件才判定该区域为“适宜居住”:airQualityIndex < 100(空气质量良好) 且noiseLevel < 60 (噪音达标)。以下哪个C++表达式能正确表示这个复合条件?{{ select(9) }}

  • airQualityIndex < 100 || noiseLevel < 60
  • airQualityIndex < 100 && noiseLevel < 60
  • !(airQualityIndex < 100 && noiseLevel < 60)
  • airQualityIndex < 100 && !noiseLevel < 60

10. 在一个处理环境数据的程序中,需要定义一个函数来计算某个监测点的综合污染指数。这个函数需要接收PM2.5、PM10和臭氧浓度三个参数,并返回一个加权计算后的总分。以下哪个函数声明是正确的?{{ select(10) }}

  • double calculatePollutionIndex(double pm25, double pm10, double ozone);
  • void calculatePollutionIndex(double pm25, double pm10, double ozone);
  • double calculatePollutionIndex(double pm25, double pm10);
  • function calculatePollutionIndex(double pm25, double pm10, double ozone);

11. 为了绘制“思路新城”的污染热力图,程序需要遍历一个二维网格 grid[ROWS][COLS],其中每个单元格存储该区域的污染等级。只有当污染等级大于5时,才在地图上标记该点。以下哪个代码片段最符合这个需求?{{ select(11) }}

  • for(int r = 0; r < ROWS; r++) { for(int c = 0; c < COLS; c++) { if(grid[r][c] > 5) { markPointOnMap(r, c); } } }
  • for(int r = 0; r < ROWS; r++) { for(int c = 0; c < COLS; c++) { markPointOnMap(r, c); if(grid[r][c] > 5) break; } }
  • for(int r = 0; r < ROWS; r++) { for(int c = 0; c < COLS; c++) { markPointOnMap(r, c); if(grid[r][c] > 5) continue; } }
  • markPointOnMap(grid);

12. 在C++中,以下哪个头文件是使用std::vector(动态数组) 所必需的?{{ select(12) }}

  • #include <cmath>
  • #include <iostream>
  • #include <vector>
  • #include <string>

13. 下列哪个选项是C++中正确的单行注释方式?{{ select(13) }}

  • /* This is a comment */
  • // This is a comment
  • <!-- This is a comment -->
  • ** This is a comment **

14. 在一个计算“思路新城”绿地含水量的C++程序中,有以下代码:float moisture = 45.2f;。变量moisture的数据类型是?{{ select(14) }}

  • int
  • float
  • double
  • bool

15. 为了在“思路新城”的中央环境监测平台中,实时处理来自数百个传感器的海量数据,最核心的编程思想是?{{ select(15) }}

  • 将所有数据手动复制粘贴到代码中
  • 将数据存储在高效的容器(如std::vector,std::array)中,并使用高效的循环和条件判断进行批量处理和分析
  • 只编写注释,不写任何逻辑代码
  • 每个传感器数据都用一个单独的程序处理

二、判断题(每题 2 分)

16. 在C++中,std::vector<double> sensorReadings = {1.2, 3.4, 5.6};是一种合法的初始化向量(动态数组)的方式。{{ select(16) }}

  • 正确
  • 错误

17. C++代码中,std::endl\n在功能上完全相同,都只起到换行的作用。{{ select(17) }}

  • 正确
  • 错误

18. 表达式25 % 7的结果是4。{{ select(18) }}

  • 正确
  • 错误

19. 在C++中,=是赋值运算符,用于将右边的值赋给左边的变量;==是比较运算符,用于判断两边的值是否相等。{{ select(19) }}

  • 正确
  • 错误

20. for(int hour = 0; hour < 24; hour++)这个循环会执行24次,hour的值从0变化到23,正好对应一天的24个小时。{{ select(20) }}

  • 正确
  • 错误