【发布时间】:2013-05-29 01:24:51
【问题描述】:
不久前我刚开始学习 C++。我正在阅读 Jumping into C++ 。 问题与第 7 章第 1 题有关:
实现将数字转换为文本的源代码。
这是我到目前为止所做的:
#include <iostream>
#include <string>
using namespace std;
int LessThen20 (int i);
int main () {
int i = 1;
cout << "please input a number: \n";
cin >> i;
if (i < 20) {
cout << LessThen20(i);
}
if ( i >= 20 && i < 30) {
cout <<"Twenty " ??
}
}
int LessThen20 (int i) {
if (i == 0) {
cout << "zero" <<endl;
}
if ( i == 1) {
cout << "one"; <<endl;
}
if (i == 2) {
cout << "two"; <<endl;
}
if ( i == 3) {
cout << "three"; <<endl;
}
if (i == 4) {
cout << "four"; <<endl;
}
if ( i == 5) {
cout << "five"; <<endl;
}
if (i == 6) {
cout << "six"; <<endl;
}
if ( i == 7) {
cout << "seven"; <<endl;
}
if (i == 8) {
cout << "eight" <<endl;
}
if ( i == 9) {
cout << "nine"; <<endl;
}
if (i == 10) {
cout << "ten"; <<endl;
}
if ( i == 11) {
cout << "eleven"; <<endl;
}
if (i == 12) {
cout << "twelve"; <<endl;
}
if ( i == 13) {
cout << "thirteen"; <<endl;
}
if (i == 14) {
cout << "fourteen"; <<endl;
}
if ( i == 15) {
cout << "fifteen"; <<endl;
}
if (i == 16) {
cout << "sixteen"; <<endl;
}
if ( i == 17) {
cout << "seventeen"; <<endl;
}
if (i == 18) {
cout << "eighteen"; <<endl;
}
if ( i == 19) {
cout << "nineteen"; <<endl;
}
}
只要输入的数字小于 20,我的程序就可以工作。但我不知道如何将数字 25 变成“25”。
任何帮助将不胜感激!
【问题讨论】:
-
std::map是一笔巨大的财富。还要努力寻找模式,当你找到一个时,将它分开。例如,13-19 有一个前缀,然后是“teen”。这意味着您不必为每个人重复“青少年”。 -
1.谷歌的“开关声明”。 2. 使用映射和字符串连接。这应该足以进一步发展。
-
这个程序确实结构错了,至少应该是一个switch语句,而不是一堆
ifs。至少有礼貌地为您的函数使用正确的命名约定,并让函数return成为结果,而不是直接输出它。 -
@AJMansfield 提出了另一个好点。你的函数说它返回一个
int,但什么也不返回。这是未定义的行为,如果你的编译器没有警告你,是时候提高警告级别了。 -
您可以通过使用 Wolfram|Alpha API 为您提供答案,“在云端”完成这一切。您只需将号码发送给它,然后从“号码名称”窗格中获取值。其他在线服务可能会做得更好,但 Wolfram|Alpha 是第一个想到的。
标签: c++