试卷总分:85分


选择题 5题 10分

01 02 03 04 05


多选题 5题 20分

06 07 08 09 10


编程题 4题 55分

11 12 13 14

E1024 全国青少年信息素养大赛 -算法应用 C++ 小学组 复赛模拟题1-考试

选择题 共5道

01 延安兵工厂开展劳动竞赛,计划前10天每天生产的手榴弹数量与天数相同(第1天1枚,第2天2枚……第10天10枚)。以下C++程序用于计算10天的总产量,运行后输出结果是多少?
int total = 0;
for(int i = 1; i <= 10; i++) {
    total = total + i;
}
cout << total;
2分
登录后查看选项
02 情报员截获一段密文 "VICTORY1945",需要用C++提取其中的部分信息。已知字符串下标从0开始,执行以下代码后,屏幕上显示的内容是?
string code = "VICTORY1945";
cout << code.substr(4, 2);
2分
登录后查看选项
03 后勤部用C++结构体管理战士信息。定义如下:
struct Soldier {
    string name;
    int age;
    int bullets;
};
Soldier s = {"张嘎", 14, 20};
cout << s.bullets;
程序运行后输出的子弹数量是?
2分
登录后查看选项
04 炮兵阵地需要根据炮弹落点与目标的距离平方值来推算实际距离。C++中可以使用数学库函数 sqrt 求平方根。执行
cout << sqrt(625);
输出结果是?
2分
登录后查看选项
05 为计算部队排列组合方案,需要编写递归函数求阶乘。定义如下:
int factorial(int n) {
    if (n <= 1) return 1;
    else return n * factorial(n - 1);
}
cout << factorial(5);
程序的输出结果是?
2分
登录后查看选项

多选题 共5道

06  (多选)在“智慧农场”项目中,使用C++数组存储多个土壤湿度传感器的读数。关于数组,以下说法正确的是? 4分
登录后查看选项
07  (多选)在“气象数据分析系统”中,使用string类型处理城市名称。对于string变量city,以下说法正确的是? 4分
登录后查看选项
08  (多选)在“火星车自动探索”程序中,使用循环遍历地形数据。关于循环控制语句break和continue,以下说法正确的是? 4分
登录后查看选项
09  (多选)在“图书管理系统”中,定义了结构体Book,包含书名、价格、页数。现在需要使用sort函数对所有书籍排序,要求先按价格升序排列,价格相同时按页数降序排列。以下说法正确的是? 4分
登录后查看选项
10  (多选)在“密码学工具”开发中,常用到数学函数和质数判断。关于C++数学库和质数算法,以下说法正确的是? 4分
登录后查看选项

编程题 共4道

11

射击比武排名

题目描述

红军举行了一场射击与投弹比武,每名战士有姓名(不含空格)、射击环数和投弹距离(单位:米)。现在需要按总成绩排名,总成绩的计算公式为:射击环数 × 3 + 投弹距离 × 2。

排名规则:先按总成绩从高到低排序;如果总成绩相同,按射击环数从高到低排序;如果仍相同,按姓名字典序从小到大排序。请你编写程序,输出前 m 名战士的姓名和总成绩。

输入格式

第一行两个整数 n 和 m,表示战士总人数和需要输出的名次数。

接下来 n 行,每行给出一个战士的信息:姓名(不含空格的字符串)、射击环数(整数)、投弹距离(整数),用空格隔开。

输出格式

共 m 行,每行输出战士的姓名和总成绩,中间用一个空格隔开。

输入样例 #1
3 2
zhangsan 90 80
lisi 85 90
wangwu 88 85
输出样例 #1
lisi 435
wangwu 434
输入样例 #2
4 3
zhao 88 90
duan 90 92
sun 88 90
li 92 80
输出样例 #2
duan 454
li 436
sun 436
数据范围

1 ≤ n ≤ 1000, 1 ≤ m ≤ n;射击环数和投弹距离均为不超过 100 的非负整数;姓名长度不超过 20。

15分

C0584
登录后作答
12

方糖堆积

小明有一堆方糖,他想用它们玩堆积游戏。游戏规则如下:

第 1 天,他堆成一个 1×1 的正方形,消耗 1 个方糖;

第 2 天,他堆成一个 2×2 的正方形,消耗 4 个方糖;

第 3 天,他堆成一个 3×3 的正方形,消耗 9 个方糖;

以此类推,第 i 天需要消耗 i×i 个方糖。

小明只有 N 个方糖。每天他都会按规则严格消耗当天的方糖数量。如果某天他发现剩余方糖数量不够支付当天的消耗,那么他就无法完成当天的堆积,游戏终止。请问小明最多能完整地玩多少天的游戏?

输入格式

一行,一个整数 N(1 ≤ N ≤ 109),表示小明拥有的方糖总数。

输出格式

一行,一个整数,表示最多能完整游戏的天数。

输入样例 #1
14
输出样例 #1
3
输入样例 #2
1
输出样例 #2
1
输入样例 #3
100
输出样例 #3
6
提示

对于样例1:第1天消耗1,剩余13;第2天消耗4,剩余9;第3天消耗9,剩余0;第4天需要16,不够,所以最多完整玩3天。

数据范围较小,可以使用循环累加解决。

10分

C0585
登录后作答
13

锯木备材

题目描述

红军需要采集木材搭建营地。现有 n 根圆木,第 i 根圆木的长度为 hi。可以用一把锯子从某个高度 H 处锯断每一根木头,得到的木材长度为该木头长度减去 H(仅当 H < hi 时才能得到木头,否则得到长度为 0)。

为了让锯子尽可能架得高一些,同时还要保证所得木材的总长度至少为 K,请求出锯片高度 H 的最大整数值。

输入格式

第一行两个整数 n 和 K,用空格隔开。

第二行 n 个整数 hi,表示每根圆木的长度,用空格隔开。

输出格式

一个整数,表示满足要求的最大锯片高度 H。

输入样例 #1
4 7
20 15 10 17
输出样例 #1
15
输入样例 #2
5 20
4 42 40 26 46
输出样例 #2
36
数据范围

1 ≤ n ≤ 105,1 ≤ K, hi ≤ 109

20分

C0586
登录后作答
14

星舰航线数据修复

在星际探险时代,探险飞船在航行中记录航线长度数据。由于宇宙射线干扰,接收到的数据中夹杂了噪点字符 *。指挥中心需要修复数据,找出航线最长的飞船,以便表彰其探索成就。

输入格式

第一行,一个正整数 n,表示飞船的数量。
接下来 n 行,每行给出飞船的代号和航线长度数据,中间用一个空格隔开。代号和长度数据均不包含空格。长度数据可能包含噪点字符 *,其余部分由数字组成,无前导零或小数点。

输出格式

输出航线长度最大的飞船代号,以及相应的修复后的实际航线长度(不含噪点*)。若有多个飞船长度并列最大,输出输入顺序靠前的飞船代号。

输入样例#1
2
StarRunner 120*345*678
GalaxyFlyer 120345*678
输出样例#1
StarRunner 120345678
输入样例#2
4
Voyager 7*7*7*7
Pioneer 77*7*7
Odyssey 777*7
Pathfinder 77*77***
输出样例#2
Voyager 7777
输入样例#3
3
NebulaCraft 9*999999*9999999*9999
SolarWing 1*0000000000000*000000
CosmoRunner 99*99999999*99999*999
输出样例#3
SolarWing 10000000000000000000
提示

1 ≤ n ≤ 100000,飞船代号长度不超过 100。航线长度数据去除噪点后的数值可能非常大,请使用合适的数据类型进行比较。

10分

C0587
登录后作答