這是Zerojudge上的一個題目,雖然放在基礎題庫的前面,但真的超難,我可是想了三天才得出解法....
中文對於省略數字的規則頗複雜,以至於在判定輸出內容上會有困難(抹臉
例如「10050000」=一千零五萬,省略了一堆零和單位....
跟之前一樣附上的執行檔載點:https://atifans.net/download/code/chinese_number_converter.rar
//存取所需函式庫
#include <stdio.h>
//主程式
int main(){
//定義變數
char* table[] = {"零","壹","貳","參","肆","伍","陸","柒","捌","玖"};
//用陣列陣列儲存大型字元(BIG5)
char* tablu[] = {"","拾","佰","仟","萬","拾","佰","仟","億","拾"};
char input[10];
int a,b,c,d,e,digit;
printf("////中文大寫轉換器 by ATi////\n\n
注意:「輸入的阿拉伯數字上限十位數,離開程式請按Ctrl+C」\n\n");
//主迴圈
while(1){
printf("阿拉伯數字:");
scanf("%s",input);
printf("中文大寫:");
//檢查位數長度
for(a=0; a<10; a++){
if((int)input[a]==0){
digit = a;
break;
}else if(a==9 && (int)input[a]!=0){
digit = 10;
break;
}
}
//初始化紀錄變數
d = 0;
e = 0;
//判定輸出內容
for(b=digit;b>0;b--){
c = ((int)input[(digit-b)]) - 48; //將字元轉換成ASCII整數才能運算
if(c!=0){
if(d!=0){
printf("%s",table[0]);
d = 0;
}
printf("%s%s",table[c],tablu[(b-1)]);
e = 1;
}else{
d = 1;
if(e!=0 && b==9){
printf("%s",tablu[(b-1)]);
e = 0;
d = 0;
}else if(e!=0 && b==5){
printf("%s",tablu[(b-1)]);
e = 0;
d = 0;
}
}
}
printf("\n\n");
}
return 0;
}
題號是?
話說 要怎麼在你的網誌使用頭像啊?
@NiwaSho Lin
題號:a008
頭像的話,你到Gravatar去用信箱綁圖片就可以了
Gravatar在很多地方都用的到,連EA的Battlelog也不例外(汗
感謝您。