问题 P: 字符串数字置换

来源:互联网 发布:爱奇艺会员淘宝关键字 编辑:程序博客网 时间:2024/06/05 16:42

题目描述
从键盘接收用户输入的字符串, 对用户输入的每个字符串的处理是:将字符串内的每一个十进制数字字符置换成下列表格中右边所对应的一个字符串(所有其他字符不变),然后将转换的结果显示在屏幕上;并分别计算每个数字的置换次数。

十进制数字字符 置换成
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

AC代码:

#include <iostream>#include<cstring>using namespace std;int a[10];int main(){    string str;    getline(cin,str);    memset(a,0,sizeof(a));   int n=str.size();   for(int i=0;i<n;i++){        if(isalnum(str[i])){            int n=str[i]-'0';            switch(n){                case '0':cout<<"(Zero)";a[0]++;break;                case '1':cout<<"(One)";a[1]++;break;                case '2':cout<<"(Two)";a[2]++;break;                case '3':cout<<"(There)";a[3]++;break;                case '4':cout<<"(Four)";a[4]++;break;                case '5':cout<<"(Five)";a[5]++;break;                case '6':cout<<"(Six)";a[6]++;break;                case '7':cout<<"(Seven)";a[7]++;break;                case '8':cout<<"(Eight)";a[8]++;break;                case '9':cout<<"(Nine)" ;a[9]++;break;        }        else{            cout<<str[i];        }   }    return 0;}
原创粉丝点击