2025年全国青少年信息素养大赛C++编程践挑战赛_初中组_复赛_真题
复赛
真题
初中
2025
2025-09-16 20:50:29
292次
一、单选题
输入一个非空的字符串,关于程序的输出以下哪个说法是正确的?()
string s;
cin >> s;
int cnt = 0;
bool flag= 1;
for (int i= 0;i< s.size();i++)
{
if (s[i] >= 'a' && s[i] <= 'z')
{
cnt++;
flag=0;
}
else if (s[i] >= 'A' && s[i] <='Z')
{
cnt--;
flag=0;
}
}
if (cnt > 0 || flag) cout << "yes" << endl;
else cout << "no" << endl:| A. 只要输入的字符串不包含小写字母,程序一定输出 no |
B. 输入AaBb,程序会输出yes |
| C. 输入1234567,程序会输出 no |
D. 只要输入的字符串不包含大写字母,程序一定输出 yes |
【知识点】 全国青少年信息素养大赛C++编程挑战赛
输入1和2,程序会输出()
#include <iostream>
using namespace std;
int a[10];
int main()
{
cin >> a[1] >> a[8];
intl=2,r=7;
while (l<r)
{
a[l]= a[l- 1]+ a[r+ 1];
a[r]= a[r + 1]- a[l-1];
l++;
r--;
}
cout << a[l]+ a[r] << endl;
return 0;
} | A. -6 |
B. 2 |
| C. -4 |
D. 3 |
【知识点】 全国青少年信息素养大赛C++编程挑战赛
二、编程题
过山车“峰”的个数问题
过山车非常刺激,乐乐同学却因为晕车体质无法和同学们一起玩。为了打发等待的时间,他在纸上大致记录了过山车轨道的图形,并估算了n个关键点的高度。如果一个点高于所有相邻的点,则称这个点为“峰”。乐乐觉得,坐过山车最刺激的时刻就是经过“峰”的时候。请写一个程序,计算过山车“峰”的个数。
输入描述
第一行:一个正整数 n;
第二行:n 个正整数a1,a2,an,ai表示第i个点的高度
输出描述
一个整数,表示“峰”的个数。
样例1
输入
6 7 6 6 3 9 1
输出
2
提示
【样例说明】
共6个点,第 1个点比相邻的第 2 个点高,第5个点比相邻的第 4个点、第6个点高,是“峰”,其余点都不是“峰”。
【数据范围】
1<=n<=100000
对于任意1<=i<=n,保证1<=ai<=1000000
【知识点】 全国青少年信息素养大赛C++编程挑战赛
数对组合问题
定义G(a,b)为两个正整数a和b先后连接起来组成新的正整数。例如:
当a为202、b为4时,G(a,b)=G(202,4)= 2024。
现在给定两个整数n和m,请问有多少数对(a, b)满足G(a,b)=(a +1)*(b +1)-1,其中1<=a<=n,1<=b<=m,并且a和b均为正整数。
输入描述
输入一行,两个正整数n和m。
输出描述
输出一行,包括一个整数,表示符合题目要求的结果。
样例1
输入
1 12
输出
1
样例2
输入
56 1000
输出
168
提示
对于100%的数据:1<=n,m<=2*109
【知识点】 全国青少年信息素养大赛C++编程挑战赛
游乐园座位分组问题
同学们想看游乐园的水上表演。观众席座位分成k排,每排有m个座位。同学人数为 n,为了好安排座位,老师希望将n名同学分成不超过k组,每组人数相同且不超过 m 人。请写一个程序,帮助老师判断能不能达成满足条件的分组,能则输出"yes",否则输出"no"。
本题有多组数据。
输入描述
第一行:一个正整数 T,代表有T组数据。
第2~T+1行:每行三个用空格隔开的正整数 n、k、m,表示同学人数、座位排数与每排座位数。
输出描述
T行,每行一个字符串"yes"或"no”
样例1
输入
2 20 5 10 37 4 20
输出
yes no
提示
【样例说明】
第1组数据:20名同学分为4组,每组5人(分法不止一种)。
第 2 组数据:没有符合条件的分法。
【数据范围】
1<=T<= 1000
1<=n,m<= 10000
1<=k<=100
【知识点】 全国青少年信息素养大赛C++编程挑战赛
游乐园抽奖问题
题目描述:在游乐园纪念品商店消费到一定数额可抽奖。店员在 0 ~ 9 范围内随机选择两个数字 a 和 b(a <= b),所有不小于 a 且不大于 b 的数字作为“彩蛋数字”。抽奖者在奖券上写一个 10 位的正整数,若 10 个数位上“彩蛋数字”不少于 6 个就算中奖。店员收集了 n 张奖券,编号为 1 ~ n,要求编写程序依次输出所有中奖奖券的编号,最后输出中奖奖券的张数。
输入描述:
第 1 行:三个用空格隔开的正整数 n、a、b,表示奖券张数、店员选择的两个数字。
第 2 ~ n + 1 行:编号为 1 ~ n 的奖券上的数,每行一个数,保证都是 10 位的正整数,无前导 0。
输出描述:
若干行,从小到大输出中奖奖券的编号,每行一个编号。最后一行输出中奖奖券的张数。
样例1
输入:
4 0 2
1234567890
9876543210
2222222222
1010109823
输出:
3
4
2
提示:
样例说明:
彩蛋数字是 0 ~ 2,4 张奖券包含的彩蛋数字个数依次为 3、3、10、7,编号为 3、4 的奖券中奖,中奖奖券张数为 2。
数据范围:
1 <= n <= 100000,0 <= a <= b <= 9。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
游乐园门票问题
题目描述
学校组织全年级同学去游乐园春游。游乐园门票分为学生票和成人票,学生票a元一张,成人票b元一张。共有x名同学参加春游,用于买票的经费为y元,请计算为x名同学买票后,剩下的钱最多能为多少位教师买票。
输入描述
四个整数 a,b,x,y,分别代表学生票价格、成人票价格、同学人数、经费,保证经费足够购买x张学生票。
输出描述
一个整数,剩下的钱最多能为多少位教师买票!
样例1
输入
20 40 100 2201
输出
5
提示
样例说明:
买 100 张学生票花费 20 *100=2000元,剩余 201元最多购买 201/40=5 张
数据范围:
1 <= a, b, x <= 100,a * x <= y <= 100000。
【知识点】 全国青少年信息素养大赛C++编程挑战赛
