我認爲我的邏輯正確,但while循環無限次,輸出零。這裏是我的代碼:C++將數字轉換爲單詞
int currentMSD, currentNum = num;
if (currentNum >= 0 && currentNum < 100) {
currentMSD = 10;
} else if (currentNum >= 100 && currentNum < 1000) {
b1 = b * msd;
b2 = num3 - b1;
num3 = b2;
switch(b) {
case 1:
cout << "one ";
break;
case 2:
cout << "two ";
cout << "five ";
break;
case 6:
cout << "six ";
break;
case 9:
cout << "nine ";
break;
case 0:
cout << "zero ";
break;
}
}
cout << '\n';
}
這裏有一個提示:通過與NUM3代碼運行= 1 – Carl 2012-07-10 04:33:52
您應該新增)'else'塊'getMSD('(用' assert(false);'如果沒有其他),這樣你就可以實際檢測出發生無效範圍的時間,而不是返回未初始化的值。類似地,''default:'應該被添加到'getWords()'中的'switch'中,以防計算結果不符合您的期望,並且最終得到的值不是0到9。 – 2012-07-10 04:36:40
也許看一些[現有的代碼](http://www8.cs.umu.se/~isak/snippets/fmtmoney.c)可以提供一些啓發/指導。 – 2012-07-10 04:38:44