簡體   English   中英

我的程序運行不正常

[英]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 對您的程序進行的分析。

迭代 1,主要是:

(新) value = 9502 / 10;
(新) digit = 9502 % 10;
值 == 950;
數字 == 2;
調用 numString( 950 );
// 注意:numString 中沒有 950 的大小寫,因此返回一個空字符串。

迭代 2,主要是:

(新) value = 950 / 10;
(新) digit = 950 % 2;
值 == 95;
數字 == 0;
調用 numString( 95 );
// 注意:numString 中沒有 95 的大小寫,因此返回一個空字符串。

上述迭代和變量值可以用筆和紙(或記事本)獲得。 你也可以用一個叫做debugger 的東西來做同樣的事情。

我希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM