###### tags: `C636` `C` {%hackmd @themes/dracula %} # C636. 十二生肖 *** ## 題目描述 ### 內容 民國元年 $(1912)$ 是鼠年。 給定若干個民國年份 -$100$ ~ $107$,請輸出該年生肖為何。 ### 輸入說明 每行各有一個整數 $n$,表示民國年分。 ### 輸出說明 每行各輸出一個中文字,表示對應的生肖。 ### 評分說明 第一題組 $(100$ %$)$:-$100 ≤ n ≤ 107$。 *** ### 範例 測資 1: 1 107 輸出 1: 鼠 狗 測資 2: -1 10 -100 輸出 2: 豬 雞 猴 *** ## 題目思索 因為沒給要輸入之行數,所以改成EOF形式判斷輸入是否結束。 ```cs while(scanf("%d", &n) != EOF){ //底下的程式 } ``` 再來只要將輸入進來的 $n$ 進行判斷並輸出即可。 ```cs n = (n + 120) % 12; switch(n){ case 1: printf("鼠\n"); break; case 2: printf("牛\n"); break; case 3: printf("虎\n"); break; case 4: printf("兔\n"); break; case 5: printf("龍\n"); break; case 6: printf("蛇\n"); break; case 7: printf("馬\n"); break; case 8: printf("羊\n"); break; case 9: printf("猴\n"); break; case 10: printf("雞\n"); break; case 11: printf("狗\n"); break; default: //當 n 為零時 printf("豬\n"); break; } ``` *** ### 初稿程式碼 ```cs= #include <stdio.h> #include <string.h> int main(){ int n; while(scanf("%d", &n) != EOF){ n = (n + 120) % 12; switch(n){ case 1: printf("鼠\n"); break; case 2: printf("牛\n"); break; case 3: printf("虎\n"); break; case 4: printf("兔\n"); break; case 5: printf("龍\n"); break; case 6: printf("蛇\n"); break; case 7: printf("馬\n"); break; case 8: printf("羊\n"); break; case 9: printf("猴\n"); break; case 10: printf("雞\n"); break; case 11: printf("狗\n"); break; default: printf("豬\n"); break; } } return 0; } ``` ### 測試結果   *** ### 嘗試更正 思考了一下,因為**沒有民國 $0$ 年**,所以之前的程式 $n$ 在負數時無法輸出對應的生肖,於是在 $n$ 為負數時再加上 $1$ 以補齊,順便整理了版面。 ```cs if(n < 0) n++; ``` ### 更正後測試結果   *** ## 成果 ### 程式碼 ```cs= #include <stdio.h> #include <string.h> int main(){ int n, c; while(scanf("%d", &n) != EOF){ if(n < 0) n++; c = (n + 120) % 12; switch(c){ case 1: printf("鼠\n"); break; case 2: printf("牛\n"); break; case 3: printf("虎\n"); break; case 4: printf("兔\n"); break; case 5: printf("龍\n"); break; case 6: printf("蛇\n"); break; case 7: printf("馬\n"); break; case 8: printf("羊\n"); break; case 9: printf("猴\n"); break; case 10: printf("雞\n"); break; case 11: printf("狗\n"); break; default: printf("豬\n"); break; } } return 0; } ``` ### 解題  *** ## 反思 這次想得不夠完善,以至於出錯,好在之後有發現問題所在,也就是民國 $0$ 年並不存在,最後得以理出正確的思緒。 *** ## 題目來源 [c636. 十二生肖 (From Zero Judge)](https://zerojudge.tw/ShowProblem?problemid=c636) ###### 2024-4-7 完成編寫此文
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up