正在载入在线练习界面,本页内容可直接阅读…
AK CSP › NOIP 普及 2010 第一轮真题 › 第 25 题
NOIP 普及 2010 第一轮 第 25 题:找字符串中 ASCII 码最大的两个字符
题目
```
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
char m1, m2;
int i;
getline(cin, s);
m1 = ' ';
m2 = ' ';
for (i = 0; i < s.length(); i++)
if (s[i] > m1) {
m2 = m1;
m1 = s[i];
}
else if (s[i] > m2)
m2 = s[i];
cout<<int(m1)<<' '<<int(m2)<<endl;
return 0;
}
```
输入:Expo 2010 Shanghai China
输出:_________
提示:
| 字符 | 空格 | '0' | 'A' | 'a' |
| :-----: | :--: | :--: | :--: | :--: |
| ASCII码 | 32 | 48 | 65 | 97 |本小题
阅读程序写结果:
答案
120 112
题解
考点定位
本题考「最大两大字符模拟」,对应大纲 4.2.1 程序模拟(难度【2】)。
解题过程
扫描「Expo 2010 Shanghai China」,维护最大 m1、次大 m2(按 ASCII)。各字符:E(69),x(120),p(112),o(111),空格(32),2(50),0(48),1(49),0(48),…S(83),h(104),a(97),n(110),g(103),h(104),a(97),i(105),…C(67),h(104),i(105),n(110),a(97)。
最大 = x(120);次大:p(112)、o(111)、n(110)、h/i(104/105)、S(83) 中最大 = p(112)。
输出:120 112。
易错提醒
① m1/m2 的更新逻辑:比 m1 大则 m2←m1、m1←当前;否则比 m2 大才更新 m2;② 小写字母 ASCII 大于大写(a=97 > Z=90),最大值必在小写里找。
真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1
京公网安备11010502062986号