正在载入在线练习界面,本页内容可直接阅读…

AK CSP › NOIP 普及 2010 第一轮真题 › 第 25 题

NOIP 普及 2010 第一轮 第 25 题:找字符串中 ASCII 码最大的两个字符

阅读程序 · 数组与字符串 · 答案 120 112

题目

```
#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号