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

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

7. 为了分析某个区域的污染趋势,系统连续记录了几天的PM10指数。调试时,你遇到了以下循环:

int pm10Levels[] = {40, 55, 85, 150, 180};
for(int i = 0; i < 5; i++){
    cout << "Day " << i+1 << ", PM10: " << pm10Levels[i] << endl;
    if(pm10Levels[i] > 150){
        cout << "严重污染!" << endl;
        break;
    }
}

这段代码的完整输出结果是什么?{{ select(7) }}

  • Day 1, PM10: 40
    Day 2, PM10: 55
    Day 3, PM10: 85
    Day 4, PM10: 150
    Day 5, PM10: 180
    严重污染!
  • Day 1, PM10: 40
    Day 2, PM10: 55
    Day 3, PM10: 85
    Day 4, PM10: 150
  • Day 1, PM10: 40
    Day 2, PM10: 55
    Day 3, PM10: 85
    Day 4, PM10: 150
    严重污染!
  • Day 4, PM10: 150
    严重污染!

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); } } }

- ```cpp
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) }}
- 正确
- 错误

需要我把这份文档**直接导出成可一键粘贴到HydroOj的纯文本版**吗?