阅读程序 · 答案 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
看到 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 中取出对应数字输出;其他字符忽略。