【问题描述】
从键盘接收用户输入的字符串, 对用户输入的每个字符串的处理是:将字符串内的每一个十进制数字字符置换成下列表格中右边所对应的一个字符串(所有其他字符不变),然后将转换的结果显示在屏幕上;并分别计算每个数字的置换次数。
十进制数字字符 | 置换成 |
0 | (Zero) |
1 | (One) |
2 | (Two) |
3 | (Three) |
4 | (Four) |
5 | (Five) |
6 | (Six) |
7 | (Seven) |
8 | (Eight) |
9 | (Nine) |
例如,若用户输入的字符串为
Page112-Line3,
则程序5的输出是:
Page(One) (One) (Two)-Line(Three),
数字0到9的置换次数分别是 0 2 1 1 0 0 0 0 0 0
【输入形式】
输入一行字符串,其中可包含字母、数字、空格或其他符号(英文)
【输出形式】
第一行为将字符串中的数字转换为表格中的内容后输出
第二行为数字0~9被转换的次数
【样例输入】
Page112-Line3
【样例输出】
Page(One)(One)(Two)-Line(Three) 0 2 1 1 0 0 0 0 0 0
#include<bits/stdc++.h>
using namespace std;
bool IsNumber(char x)
{
if(x=='0'||x=='1'||x=='2'||x=='3'||x=='4'||x=='5'||x=='6'||x=='7'||x=='8'||x=='9')
return true;
else return false;记得写false
}
string Trans(int a)
{
switch(a)
{
case 0 : return "(Zero)";
case 1 : return "(One)";
case 2 : return "(Two)";
case 3 : return "(Three)";
case 4 : return "(Four)";
case 5 : return "(Five)";
case 6 : return "(Six)";
case 7 : return "(Seven)";
case 8 : return "(Eight)";
case 9 : return "(Nine)";
}
}
int main()
{
string str;
getline(cin,str);//不能用cin,因为这一行输入可能有空格
int a[10];
fill(a,a+10,0);
for(int i=0;i<str.length();i++)
{
if(!IsNumber(str[i])) cout<<str[i];
else
{
a[str[i]-'0']++;
cout<<Trans(str[i]-'0');
}
}
cout<<endl;
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}
复习下switch