NOIP 普及组初赛 · NOIP 2011 普及组初赛试题 第 24 题

阅读程序 · 答案 22366472011 · 考点:输入输出、位运算、分支结构、循环结构、字符串(string)、STL容器基础

← 整套速查表 NOIP 普及组初赛 全部真题

题目

阅读程序写结果

#include<iostream>
#include<string>
using namespace std;

int main()
{
    string map= "2223334445556667778889999";
    string tel;
    int i;
    cin>>tel;
    for(i=0;i<tel.length();i++)
       if((tel[i]>='0') && (tel[i]<='9') )
           cout<<tel[i];
       else if( (tel[i]>='A') && (tel[i]<='Z'))
           cout<<map[tel[i]-'A'];
    cout<<endl;
    return 0;
}

输入:CCF-NOIP-2011

答案:22366472011

考点

输入输出位运算 讲解 →位运算 真题汇总 →分支结构循环结构字符串(string)STL容器基础 讲解 →STL容器基础 真题汇总 →

解题思维

看到 tel[i]-'A' 查表,先想映射规则:A-I→2-4,J-O→5-6,P-S→7,T-V→8,W-Z→9。

常见错误

易混 map 下标:A=0,B=1,C=2(对应'2'),D=3,E=4,F=5(对应'3');数字字符直接输出,勿漏。

详细解析(节选)

考点:字符串遍历、条件分支、查表映射

程序在做什么

输入字符串,遍历每个字符:若是数字直接输出;若是大写字母,通过 tel[i]-'A' 计算下标,从 map 中取出对应数字输出;其他字符忽略。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断