最近在教同學寫PHP,期末作業出了我以前寫過的中文大寫轉換
寫參考解答的時候順便修正了一下以前沒處理的狀況如下
<?php fscanf(STDIN, "%s\n", $input); $number = ['零', '壹', '貳', '參', '肆', '伍', '陸', '柒', '捌', '玖']; $unit = ['', '拾', '佰', '仟']; $unit2 = ['', '萬', '億', '兆']; $zeroed = false; // 是否出現零 $partedNonZero = false; // 是否出現非零數字 for ($char = strlen($input) - 1; $char >= 0; $char--) { // 取得數字 $digit = $input[strlen($input) - $char - 1]; // 判斷數字是否為零 if ($digit != 0) { // 顯示剛剛出現的零(如果有) if ($zeroed) { $zeroed = false; echo $number[0]; } // 顯示非零數字和單位 echo $number[$digit], $unit[$char % 4]; // 標記有非零數字 $partedNonZero = true; } else { // 標記有零 $zeroed = true; } // 跨單位時,出現非零數字要顯示單位 if ($partedNonZero && $char % 4 == 0) { echo $unit2[$char / 4]; $zeroed = false; $partedNonZero = false; } }
留言