#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
string numString(int k)
{
string str;
switch (k) {
case 0 : str ="ZERO"; break;
case 1 : str ="ONE"; break;
case 2 : str ="TWO"; break;
case 3 : str ="THREE"; break;
case 4 : str ="FOUR"; break;
case 5 : str ="FIVE"; break;
case 6 : str ="SIX"; break;
case 7 : str ="SEVEN"; break;
case 8 : str ="EIGHT"; break;
case 9 : str ="NINE"; break;
}
return str;
}
int main(int argc, char** argv) {
int value;
int digit;
cout << "Enter a number: ";
cin >> value;
while (value > 0 )
{
digit = value % 10;
value = value / 10;
cout << numString(value) << endl;
}
return 0;
}
我的程序应该提示用户读取该值的整数值,并输出每个数字的等效字 例如,如果输入“9502”,它将输出“NINE FIVE ZERO TWO” 然而我的只输出“NINE ZERO”然后停止。我无法弄清楚我做错了什么,非常感谢任何帮助。
答案 0 :(得分:5)
然而我的只输出&#34; NINE ZERO&#34;然后停下来。
这就是你告诉它要做的事情!
while (value > 0 )
您必须找到一些其他方式来发出&#34;终止&#34;条件,如果零应该是有效的。
传统上,我们让系统自己的文件结束信令为我们处理,因此我们不必保留&#34;保留&#34;一些其他有效的输入并将其用作信号标志。
while (cin >> value) {
digit = value % 10;
value = value / 10;
cout << numString(value) << endl;
}
这会修复你的循环,虽然不幸的是你的数学仍然是错误的,你的输出不是你想要的。实际上,根本不使用您的digit
变量。我不打算在这里使用一种算法:你必须在纸上解决如何实现业务逻辑的问题。 :)
答案 1 :(得分:1)
这是使用输入9502对您的程序进行的分析。
(新)value = 9502 / 10;
(新)digit = 9502 % 10;
值== 950;
digit == 2;
调用numString( 950 );
//注意:numString中没有950的情况,因此返回一个空字符串。
(新)value = 950 / 10;
(新)digit = 950 % 2;
值== 95;
digit == 0;
调用numString( 95 );
//注意:numString中没有95的情况,因此返回一个空字符串。
上述迭代和变量值可以用pen&amp;获得。纸(或记事本)。您也可以使用名为调试器的内容执行相同的操作。
我希望这会有所帮助。