我想知道是否有一种方法可以按字母顺序打印数字,即
123
应打印为one two three
。
唯一的条件是我们不应该反转这个数字,我们不应该使用数组。
我只知道这两种方式:
switch
和大量case
s 有什么想法吗?
答案 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;
}