将数字翻译成字符串

时间:2013-09-11 15:10:29

标签: c++ c

我想知道是否有一种方法可以按字母顺序打印数字,即 123应打印为one two three

唯一的条件是我们不应该反转这个数字,我们不应该使用数组。

我只知道这两种方式:

  • “反转数字”,即取最后一位数并将其删除。对于每个截止数字,可以使用数组来查找正确的字符串。
  • 使用switch和大量case s

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

数百个地方:

int hundreds = my_num / 100 //Needs "/", NOT "%"
if(hundreds == 0)
  cout << "zero";
else if(hundreds == 1)
  cout << "one";
//repeat for 2-9

可以调整此过程以执行其他数字。还值得一提的是,if / else块a)可以用开关/ case来完成,如果愿意的话,b)可以很容易地变成一个单独的函数,以避免不得不一遍又一遍地重复代码块,I为了清楚起见,我尽可能多地写出来。请注意,这假设您“翻译”的数字是整数。对于整数,“/”运算符将返回完全商而不包括余数,例如123/100 = 1,而不是1.23

答案 1 :(得分:0)

不一定是最简单的路线,但是你可以创建一个函数,比如说DigitToWord,它将使用switch语句将数字0,1,2,...等用于其单词。然后我建议在数字上使用for循环,连续除以10并将循环的mod:

int num; //my number i want to print
int div = pow(10, (int)log10(num)); //find the largest power of 10 smaller than num
while(num > 0) {
  int remainder = num%div;
  int digit = num/div;
  DigitToWord();
  num = remainder;
}