读书人

求解数字到对应单词的相互转换有关问

发布时间: 2012-08-16 12:02:15 作者: rapoo

求解,数字到对应单词的相互转换问题
编程题,定义一个能够存储10个字符串的向量,分别是“zero”,“one”..."nine",例如当输入7时,输出“seven”,当输入“seven”时,输出“7”,请问应该怎么设计啊?不太懂输入流的存储。还请高手指教!!

[解决办法]
对C++不是很熟悉,丢个C版本的:

C/C++ code
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <ctype.h>void main(void){    static const char *tab[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};    enum {BUF_SIZE = 16};    char buf[BUF_SIZE] = {0};    /* 输入 */    scanf("%s", buf);    /* 第一个字符是不是数字? */    if (isdigit(buf[0]))    {        /* 是 */        buf[1] = '\0';        printf("%s\n", tab[atoi(buf)]);    }    else    {        /* 否 */        int i;        /* 遍历字符串表 */        for (i = 0; i < sizeof(tab) / sizeof(tab[0]); ++i)        {            /* 匹配否? */            if (0 == strcmp(tab[i], buf))            {                printf("%d\n", i);                break;            }        }    }}
[解决办法]
vector<string> vec(10);
vec[0] = "zero";
vec[1] = "one";
...

int i = 0;
cin >> i;

if (0 <= i && i <= 9)
cout << vec[i];


[解决办法]
好吧,请看我拙劣的C++代码……
C/C++ code
#include <iostream>#include <string>#include <vector>#include <cctype>#include <cstdlib>using namespace std;void main(void){    static const string str_tab[] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"};    vector<string> tab(str_tab, str_tab + 10);    string buf;    // 输入    cin >> buf;    /* 判断 */    if (isdigit(buf[0]))    {        cout << tab[atoi((buf.substr(0, 1)).c_str())];    }    else    {        for (int i = 0; i < tab.size(); ++i)        {            if (0 == buf.compare(tab[i]))            {                cout << i << endl;                break;            }        }    }} 

读书人网 >C++

热点推荐