看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
tw00088437:實際跑過怎麼好像是屍體=_= 啥都沒 10/21 12:19
※ 編輯: csihcs 來自: 211.74.9.2 (10/21 23:55)
tw00088437:好像還是掛 這次好像是陣列超出範圍@@? 10/22 01:42
csihcs:你是不是改錯了什麼~~ 10/22 10:18
csihcs:我上傳這個code 已經AC了呀 10/22 10:19
tw00088437:真的嘛@@!? 10/22 19:27
tw00088437:噢 謝謝: ) 10/22 19:38
tw00088437:啊我發覺 是ac了 可是108000會錯誤@@? 10/22 19:45