在我的代码中,我不明白为什么0不打印出来,我做了所有可能的解决方案,但是它不打印出来。
#include <iostream>
using namespace std;
int main(){
int digits;
int numberOne = 0;
int integer;
cout<<"Enter the number: ";
cin>>digits;
while (digits != 0) {
numberOne = (numberOne * 10) + (digits % 10);
digits /= 10;
}
for (integer = numberOne; integer > 0; integer = integer / 10){
switch (integer % 10) {
case 0:
cout<<"Zero\n";
break;
case 1:
cout<<"One\n";
break;
case 2:
cout<<"Two\n";
break;
case 3:
cout<<"Three\n";
break;
case 4:
cout<<"Four\n";
break;
case 5:
cout<<"Five\n";
break;
case 6:
cout<<"Six\n";
break;
case 7:
cout<<"Seven\n";
break;
case 8:
cout<<"Eight\n";
break;
case 9:
cout<<"Nine\n";
break;
}
}
return 0;
}
零不打印如何修复?预期输出是900(九零零),但在我的情况下零不打印。帮助谢谢。
4条答案
按热度按时间8dtrkrch1#
因为在这一行:
循环只在
integer>0
时继续。2因此你永远不会看到“零”。zxlwwiss2#
为什么不打印零?看看你的循环
如果
integer
等于0,那么这个循环就永远不会进入。你需要在循环中更聪明一点。计数数字怎么样?现在您已经有了位数,可以在第二个循环中使用它
你仍然需要把零当作一种特殊情况,因为如果用户输入
0
,那么num_digits
将等于零,你也不会打印任何东西。hgncfbus3#
在转换900时,零没有显示的原因是,当你把900转换为009时,没有提到处理009中前导零的条件,它们被忽略了。要做到这一点,最好的方法是把它们存储在其他地方,比如字符串或数组中。你也可以在转换时直接把数字字存储到数组中。这样就不会丢失前导零。
cunj1qz14#
其他答案已经解决了代码的主要问题。
这个答案集中在帖子的标题上:如何将多个数字打印成单词?
为了检索给定数字的字符串,只需对该数组进行索引。
(see
digits[c - '0']
以下)您可以从标准输入中直接读取数字作为字符串,或者对整数使用
std::to_string
。另请注意,当从数字字串阅读字符
c
时,c - '0'
会提供介于0
和9
之间的整数,您可以将它当做数组索引。Demo