最近在教同學寫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;
}
}
留言