求解,数字到对应单词的相互转换问题
编程题,定义一个能够存储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; } } }}