题目
【问题描述】
从键盘接收用户输入的字符串, 对用户输入的每个字符串的处理是:将字符串内的每一个十进制数字字符置换成下列表格中右边所对应的一个字符串(所有其他字符不变),然后将转换的结果显示在屏幕上;并分别计算每个数字的置换次数。
十进制数字字符
置换成
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
思路
- 将要转化的字符串存在一个数组里,将对应位置输出相应的字符
- 输入的字符串判断每一个字符,如果为数字,就在相应的数字计数上加1
题解
代码如下(示例):
#include<bits/stdc++.h>
using namespace std;
string t[10] =
{ "(Zero)" ,"(One)" ,"(Two)" ,"(Three)" ,"(Four)" ,
"(Five)" , "(Six)" ,"(Seven)","(Eight)","(Nine)" };
int main()
{
string ss;
getline(cin, ss);
int len = ss.length();
int a[10] = { 0 };//全为0
for (int i = 0; i < len; i++)
{
int temp = ss[i] - '0';
if (temp < 10 && temp >= 0)
{
a[temp]++;
cout << t[temp];
}
else
cout << ss[i];
}
cout << endl;
for (int i = 0; i < 10; i++)
cout << a[i] << " ";
}