Re: [問題] 在dev c++測試過了 在測驗網站上測資不 …
※ 引述《tw00088437 (喵貓 loves fish)》之銘言:
: 噢感謝兩位回答 和舉出我108000和100800之類的會掛@@
: 現在我修正過了 在最下面
: 不過問題識
: 1. 我現在大概只會基本的function 迴圈 array 以上兩位的看不太懂說@@?
a008. 中文大寫數字 AC (6ms, 2.3MB)
void show(int a) {
string word[] = {"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};
string unit[] = { "","拾","佰","仟","萬","拾","佰","仟","億","拾"};
// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
string num[11] = "零";
int b,c;
^^^^^^^^^^^^^
漏掉宣告 d,以及初始化 b
改成 int b = 0,c,d;
int zero = 0;
// 轉換為中文,並存於 num,以 array 查詢法,取代原本的 switch case
while(a != 0) {
c = a % 10;
num[b] = word[c];
b++;
a /= 10;
}
b--;
for(c = b ; c >= 0 ; c--) {
// 若 num[c] != "零"
if( num[c] != word[0] ) {
// zero 紀錄前面的數字出現 0 的次數
// 當 zero > 0 ,則表示前面曾出現 0 ,故先顯示"零"
if(zero > 0) {
cout << word[0];
zero = 0;
}
// 以 array 查詢法,取代原本的 switch case
cout << num[c] << unit[c];
// 紀錄最後一次不為 0 的位置
d = c;
} else {
// d % 4 == 0 表示已經顯示過 unit
// 在 0 <= zero < 4 範圍中,顯示 (d - zero) % 4 == 0 的 unit
// zero >= 4 的時候不顯示,因為前面已經顯示過
if(d % 4 != 0 && zero >= 0 && zero < 4 && (d - zero) % 4 == 0) {
cout << unit[d-zero];
}
zero++;
}
}
}
int main() {
int a;
while (cin>> a) {
show(a);
cout << endl;
}
system("pause");
return 0;
}
: 2.改過之後第七測資過了 現在是死第八個
: 100200應該要"十萬零兩佰" 我沒有那個零 Orz
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.9.2
推
10/21 12:19, , 1F
10/21 12:19, 1F
※ 編輯: csihcs 來自: 211.74.9.2 (10/21 23:55)
推
10/22 01:42, , 2F
10/22 01:42, 2F
→
10/22 10:18, , 3F
10/22 10:18, 3F
→
10/22 10:19, , 4F
10/22 10:19, 4F
推
10/22 19:27, , 5F
10/22 19:27, 5F
推
10/22 19:38, , 6F
10/22 19:38, 6F
推
10/22 19:45, , 7F
10/22 19:45, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):