[英]My program doesn't quite work right
#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”,它將輸出“九五零二”但我的只輸出“九零”和然后停止。 我無法弄清楚我做錯了什么,非常感謝任何幫助。
然而我的只輸出“九零”然后停止。
這就是你告訴它要做的!
while (value > 0 )
如果零應該是有效的,您將不得不找到其他方法來發出“終止”條件的信號。
傳統上,我們讓系統自己的文件結束信號為我們處理這個問題,這樣我們就不必“保留”一些其他有效的輸入並將其用作信號標志。
while (cin >> value) {
digit = value % 10;
value = value / 10;
cout << numString(value) << endl;
}
這修復了你的循環,盡管不幸的是你的數學仍然是錯誤的,你的輸出不是你想要的。 事實上,您的digit
變量根本沒有使用。 我不會在這里用勺子喂算法:你必須在紙上解決如何實現業務邏輯。 :)
這是使用輸入 9502 對您的程序進行的分析。
(新) value = 9502 / 10;
(新) digit = 9502 % 10;
值 == 950;
數字 == 2;
調用 numString( 950 );
// 注意:numString 中沒有 950 的大小寫,因此返回一個空字符串。
(新) value = 950 / 10;
(新) digit = 950 % 2;
值 == 95;
數字 == 0;
調用 numString( 95 );
// 注意:numString 中沒有 95 的大小寫,因此返回一個空字符串。
上述迭代和變量值可以用筆和紙(或記事本)獲得。 你也可以用一個叫做debugger 的東西來做同樣的事情。
我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.