好的,没问题!我将围绕 **“路上丝路新城”** 和 **“海上丝绸之路”** 两大主题,以 **中国电子学会青少年软件编程等级考试(C/C++/Python/图形化)二级** 的核心知识点为纲,为您设计三套加大难度的模拟试卷。
每套试卷包含 **15道选择题** 和 **5道判断题**,题目侧重于**程序模拟与计算**,力求在知识点范围内提升思维和应用的难度。
---
### **C++ 二级 模拟试卷:丝路驼队与贸易计算**
**主题:** 路上丝绸之路 - 驼队行进与商品贸易
**一、选择题 (1-15)**
1. **变量与数据类型/运算:** 一支驼队从长安出发,初始有骆驼 `int camels = 50;`。途中因伤病损失了 `float lossRate = 0.12;`。要计算剩余健康骆驼的数量(整数),正确的强制类型转换表达式是:
A. `int(camels * (1 - lossRate))`
B. `camels * (1 - (int)lossRate)`
C. `(int)camels * (1 - lossRate)`
D. `camels * int(1 - lossRate)`
2. **逻辑运算:** 判断驼队是否可以出发。条件:天气晴好 `bool weather = true;`,向导在场 `bool guide = false;`,货物装载完成 `bool loaded = true;`。出发条件是“天气好且(向导在或货物已装好)”。对应的逻辑表达式是:
A. `weather && guide || loaded`
B. `weather && (guide || loaded)`
C. `weather || guide && loaded`
D. `(weather && guide) || loaded`
3. **if-else 嵌套:**
```cpp
int distance = 1200; // 距下一个驿站的距离(里)
int water = 30; // 剩余水囊数
if (distance > 1000) {
if (water > 20) cout << "急行";
else cout << "补水";
} else {
if (water > 10) cout << "常速";
else cout << "休整";
}
```
输出是?
A. 急行 B. 补水 C. 常速 D. 休整
4. **switch 语句:** 根据货物代码 `int code` 计算税率:1-丝绸(5%),2-瓷器(8%),3-茶叶(3%),其他(10%)。有一段代码用 `switch` 实现了税率赋值给 `rate`,但 `code=2` 时 `rate` 应为?
A. 0.05 B. 0.08 C. 0.03 D. 0.10
5. **for 循环(数列求和):** 丝路沿线上有多个贸易城市。从起点到第n个城市的累计里程数公式为:第i个城市距离起点 `i*i + 10` 里。计算前5个城市总里程的程序片段中,`sum` 的最终值是多少?
```cpp
int sum = 0;
for (int i=1; i<=5; i++) {
sum += i*i + 10;
}
```
A. 90 B. 95 C. 100 D. 105
6. **while 循环(模拟过程):** 驼队每天行进 `dayDistance` 里,直到总行程 `total` 达到 `target` 里。若 `dayDistance=35`, `target=500`,以下循环结束后,`days` 的值是?
```cpp
int total=0, days=0, dayDistance=35, target=500;
while(total < target) {
total += dayDistance;
days++;
}
```
A. 14 B. 15 C. 500 D. 35
7. **一维数组(遍历与统计):** 数组 `int goods[6] = {12, 8, 15, 8, 20, 8};` 记录了6个驿站丝绸包裹的数量。要统计包裹数为8的驿站数量,正确遍历的 `if` 条件应是?
A. `if(goods[i] = 8)` B. `if(goods[i] == 8)` C. `if(goods[i] != 8)` D. `if(i == 8)`
8. **二维数组(矩阵应用):** 一个 `map[3][3]` 表示3x3区域的地形,值1代表绿洲,0代表沙漠。计算绿洲数量的代码片段中,内层循环变量 `j` 的范围应是?
A. `j < 3` B. `j <= 3` C. `j > 3` D. `j == 3`
9. **字符串(字符数组遍历):** 有一个字符数组 `char city[] = “Dunhuang”;`,用循环计算其实际长度(不包括 ‘\0‘)。循环条件应是?
A. `city[i] != ‘ ‘` B. `city[i] != ‘\n‘` C. `city[i] != ‘\0‘` D. `i < 8`
10. **函数(定义与参数传递-值传递):**
```cpp
void trade(int a, int b) { int t=a; a=b; b=t; }
int main() {
int silk=100, porcelain=200;
trade(silk, porcelain);
cout << silk << “,“ << porcelain;
}
```
输出是?
A. 100,200 B. 200,100 C. 100,100 D. 200,200
11. **函数(返回值和作用):** 一个函数接收骆驼数量 `camels` 和每驼载重 `load`,返回总载重量。其函数头应为?
A. `void totalLoad(int c, int l)` B. `int totalLoad(int c, int l)` C. `int totalLoad(void)` D. `totalLoad(int c, int l)`
12. **结构体(定义与访问):** 定义了 `struct Caravan { int camels; char leader[20]; float water; };` 并声明了 `Caravan c1;`。如何正确给 `camels` 成员赋值50?
A. `camels = 50;` B. `c1.camels = 50;` C. `Caravan.camels = 50;` D. `c1->camels = 50;`
13. **综合计算(混合运算优先级):** 计算一批货物的总价值:`int num=30; float price=2.5; int discount=5;`。表达式 `num * price - discount` 的结果类型是?
A. `int` B. `float` C. `char` D. `bool`
14. **程序阅读(嵌套循环-图形模拟):** 以下程序模拟了丝路关隘的简易布局,输出是一个?
```cpp
for(int i=0; i<3; i++) {
for(int j=0; j<=i; j++) cout << “*”;
cout << endl;
}
```
A. 3行全为`***` B. 直角三角形 C. 矩形 D. 倒三角形
15. **算法理解(模拟与迭代):** 丝路资金复利增长:本金 `money=1000`,年利率 `rate=0.05`,计算5年后的本息和。正确的累乘语句(在循环内)是?
A. `money = money + money*rate;` B. `money += rate;` C. `money = money * rate;` D. `money = rate * 5;`
**二、判断题 (16-20)**
16. 在C++中,`if (a = b)` 是判断a和b是否相等的正确写法。 【 】
17. `for(int i=0; i<10; i++);` 循环体会执行10次空语句。 【 】
18. 数组 `int arr[5];` 的有效下标范围是从 `arr[0]` 到 `arr[4]`。 【 】
19. 在函数中,通过值传递方式修改形参的值,会影响主调函数中实参的值。 【 】
20. 结构体 `struct` 的成员可以是不同的数据类型。 【 】
---
### **Python 二级 模拟试卷:海舶航行与港口管理**
**主题:** 海上丝绸之路 - 船舶航行与港口物流
**一、选择题 (1-15)**
1. **数据类型与转换:** 一艘海舶的排水量为 `tonnage = “1500.75“`(字符串)。要将其转换为浮点数进行计算,应用:
A. `int(tonnage)` B. `float(tonnage)` C. `str(tonnage)` D. `list(tonnage)`
2. **字符串操作:** 港口名称 `port = “Guangzhou Nansha Port“`。`port.count(‘a‘)` 的结果是?
A. 2 B. 3 C. 4 D. 5
3. **列表索引与切片:** `cargos = [‘丝绸‘, ‘瓷器‘, ‘茶叶‘, ‘香料‘, ‘珠宝‘]`。`cargos[1:4]` 的结果是?
A. `[‘瓷器‘, ‘茶叶‘, ‘香料‘]` B. `[‘丝绸‘, ‘瓷器‘, ‘茶叶‘]` C. `[‘瓷器‘, ‘茶叶‘, ‘香料‘, ‘珠宝‘]` D. `[‘丝绸‘, ‘瓷器‘, ‘茶叶‘, ‘香料‘]`
4. **列表方法:** 向货单列表 `manifest` 末尾添加新货物 ‘象牙‘,应使用:
A. `manifest.insert(‘象牙‘)` B. `manifest.add(‘象牙‘)` C. `manifest.append(‘象牙‘)` D. `manifest.pop(‘象牙‘)`
5. **元组:** 船只坐标 `position = (23.5, 112.8)`。以下哪项操作是**错误**的?
A. `print(position[0])` B. `x, y = position` C. `position[0] = 24.0` D. `len(position)`
6. **字典:** 用字典记录各港口库存:`stock = {“Quanzhou“: 500, “Yangzhou“: 300, “Guangzhou“: 700}`。要更新“Quanzhou“的库存为550,应使用:
A. `stock[0] = 550` B. `stock[“Quanzhou“] = 550` C. `stock.insert(“Quanzhou“, 550)` D. `stock.append(“Quanzhou“: 550)`
7. **集合(去重):** 一份到访港口记录列表 `visits = [“Malacca“, “Hormuz“, “Malacca“, “Aden“, “Hormuz“]`。如何得到去重后的港口集合?
A. `list(set(visits))` B. `set(list(visits))` C. `set(visits)` D. `visits.set()`
8. **逻辑运算:** 判断一艘船是否可以出港:货物已检 `checked=True`,天气许可 `weather=False`,船长在船 `captain=True`。出港条件为“货物已检且(天气许可或船长在船)”。表达式是:
A. `checked and weather or captain` B. `checked and (weather or captain)` C. `checked or weather and captain` D. `(checked and weather) or captain`
9. **if-elif-else:**
```python
wind = 6 # 风力等级
if wind > 7:
sail = “停航“
elif wind > 4:
sail = “半帆“
else:
sail = “满帆“
```
`sail` 的值是?
A. 停航 B. 半帆 C. 满帆 D. 错误
10. **for 循环(遍历序列):** 计算一组水深数据列表 `depths = [5, 12, 8, 20, 3]` 的平均值。循环累加后,除以哪个变量得到平均值?
A. `len(depths)` B. `sum(depths)` C. `depths.length` D. `max(depths)`
11. **while 循环(条件模拟):** 一艘船每天航行 `daily = 80` 海里,直到总航程 `total` 达到 `target = 1000` 海里。循环结束后,`days` 为?
```python
total, days = 0, 0
daily, target = 80, 1000
while total < target:
total += daily
days += 1
```
A. 12 B. 13 C. 1000 D. 80
12. **函数(定义与调用):** 定义一个计算航程的函数 `def voyage(speed, time):`,其返回值为 `speed * time`。调用 `voyage(10, 24)` 的结果是?
A. 240 B. 1024 C. 34 D. 错误
13. **函数(参数与返回值):** 函数 `def load(cargo_list, item):` 内部执行 `cargo_list.append(item)`,并返回 `cargo_list`。这属于哪种参数传递效果?
A. 对传入列表的修改会影响实参 B. 对传入列表的修改不会影响实参 C. 只能传值 D. 必须用`return`才能修改
14. **文件操作(基础):** 要将港口名录写入文件,正确的打开模式是?
A. `open(“ports.txt“, “r“)` B. `open(“ports.txt“, “w“)` C. `open(“ports.txt“, “a“)` D. `open(“ports.txt“, “x“)`
15. **异常处理(try-except):** 程序尝试将用户输入的字符串转为整数进行计算,为防止输入非数字导致崩溃,应使用 `try-except` 捕获哪种异常?
A. `ValueError` B. `TypeError` C. `IndexError` D. `ZeroDivisionError`
**二、判断题 (16-20)**
16. Python中,`列表(list)` 和 `元组(tuple)` 都是可变的数据类型。 【 】
17. 字典的键(key)必须是不可变类型,如字符串、数字或元组。 【 】
18. `for i in range(5):` 循环中,变量 `i` 的值依次为 0,1,2,3,4。 【 】
19. 在函数内部使用 `global` 声明的变量,指的是该函数的局部变量。 【 】
20. 使用 `open()` 打开文件后,必须使用 `close()` 方法或 `with` 语句来确保文件被正确关闭。 【 】
---
### **Scratch(图形化)二级 模拟试卷:丝路使者与物资调度**
**主题:** 综合路上与海上丝路 - 角色互动与事件模拟
**一、选择题 (1-15)**
1. **运动与坐标:** 一个“使者“角色要从 `(0,0)` 点沿直线移动到 `(100,100)` 点。使用 **“在1秒内滑行到x: y:“** 积木,x和y应分别填入?
A. x:0, y:0 B. x:100, y:0 C. x:100, y:100 D. x:0, y:100
2. **外观与造型切换:** 要让一个“骆驼“角色在“行走“和“休息“两个造型间循环切换,模拟走路动画,应使用哪组积木?
A. **“说“** 和 **“等待“** B. **“下一个造型“** 和 **“等待“** C. **“将大小增加“** D. **“隐藏“** 和 **“显示“**
3. **事件(广播):** 当“海关“角色完成检查后,需要通知“商队“角色可以出发。最合适的通信方式是?
A. 使用 **“说“** 积木 B. 使用 **“广播“** 和 **“当接收到广播“** 积木 C. 使用 **“变量“** D. 使用 **“询问“** 积木
4. **控制(重复执行):** 要模拟一艘船持续向前航行,直到抵达港口(假设用触碰颜色判断),应使用哪个控制结构?
A. **“重复执行“** B. **“重复执行直到“** C. **“如果那么“** D. **“停止全部“**
5. **侦测(颜色/角色触碰):** 判断“商船“角色是否抵达“广州港“角色,最准确的侦测条件是?
A. **“碰到鼠标指针?“** B. **“碰到颜色?“** C. **“碰到 广州港 ?“** D. **“询问...并等待“**
6. **变量(创建与使用):** 要统计丝路上不同“驿站“的数量,应该?
A. 为每个驿站创建一个变量 B. 创建一个名为“驿站数量“的变量,并在到达新驿站时增加1 C. 使用列表 D. 使用广播
7. **运算(随机数):** 模拟海上航行遇到的随机事件(1-3代表不同事件),应使用哪个运算积木组合?
A. **“在1和10之间取随机数“** 改为 `1` 和 `3` B. **“0+0“