蓝桥杯青少选拔赛C++真题解析:位数判断与字符串去重
需积分: 17 76 浏览量
更新于2024-08-04
收藏 27KB DOC 举报
"第十四届蓝桥杯青少选拔赛C++8月21日场次的真题及参考答案,包括三个编程题目:求正整数个位数、判断数字满足特定条件的数量以及字符串去重并保持字典序最小。"
在此次蓝桥杯青少选拔赛中,参赛者需要掌握C++语言的基本语法和逻辑思维能力。以下是三个题目的详细解析:
1. 编程实现:个位数
这个问题要求程序读取一个正整数N,并输出其个位上的数字。解题的关键在于理解整数除法和模运算。对于给定的输入N,可以通过对10取模得到个位数,因为模10操作会返回数字的最后一位。例如,对于输入123,`123 % 10`的结果就是3。
```cpp
int n;
cin >> n;
cout << n % 10;
```
2. 编程实现:判断数字
题目要求统计100到N之间满足特定条件的正整数数量。这些条件是:个位不是3,十位不是5,百位不是7。解决这个问题的方法是遍历这个范围内的所有数字,对每个数字应用条件检查,并累加满足条件的计数。如示例代码所示,使用循环和条件判断即可实现。
```cpp
int n, sum = 0;
cin >> n;
for (int i = 100; i <= n; i++) {
if (i % 10 != 3 && i / 10 % 10 != 5 && i / 100 % 10 != 7) {
sum++;
}
}
cout << sum;
```
3. 编程实现:去重
去重的同时保持字典序最小,意味着需要保留首次出现的每个字符,并确保结果字符串是最小的。这需要使用一个字符数组来跟踪字符出现的情况,并根据字典序进行处理。当遍历字符串时,如果遇到的字符未在数组中出现过,则添加到结果字符串中,如果已经存在,就跳过。为了保持字典序,需要按字符的原始顺序添加到结果字符串中。
```cpp
string s;
getline(cin, s);
bool used[26] = {false};
string result;
for (char c : s) {
if (!used[c - 'a']) {
used[c - 'a'] = true;
result += c;
}
}
cout << result;
```
这三个题目涵盖了C++基础语法中的变量、输入输出、条件判断、循环控制以及字符串处理等内容,适合于评估青少年选手的基础编程能力和逻辑思维能力。通过解答这些问题,参赛者可以提升对C++语言的理解和实际运用能力。
2019-09-24 上传
2024-03-12 上传
2024-01-23 上传
2024-01-23 上传
2024-01-23 上传
2024-01-23 上传
2024-01-23 上传
2024-01-23 上传
2024-01-23 上传
星卯教育tony
- 粉丝: 4424
- 资源: 51
最新资源
- OnlineBookstore:这是一个简单的在线书店项目
- 记录自己的Python ML and DPL学习经历.zip
- react_base:Projeto基本em react
- resume:我的履历库
- ACP:我在萨尔大学的一个名为“高级Coq编程”课程的项目。 我的工作仅限于Reflection.v和GeneralReflection.v文件,对PA.v和ZF.v进行了一些细微修改
- laravel-mbt_transfer
- publicfile:容器 >
- kazoo-braintree:Braintree簿记员
- 记录python学习用.zip
- plc与气压控制讲了气阀,气路原理以及用PLC的控制(基础,WORD文档).zip三菱PLC编程案例源码资料编程控制器应用通讯通
- 外部窗口菜单内码转换-易语言
- flexbox-course
- CAD Scripts-开源
- JSP 学生排课选课系统-毕业设计(源码+论文).rar
- SistAlCec-Eof
- idcard-iranian:诊断您的身份证是真还是假(对于伊朗人)===诊断身份证号码的正确性