2015年12月3日 星期四

a003:兩光法師占卜術 (32)

a003: 兩光法師占卜術 (32)

更新時間:2016/12/22

內容
  兩光法師時常替人占卜,由於他算得又快又便宜,因此生意源源不絕,時常大排長龍,他想算得更快一點,因此找了你這位電腦高手幫他用電腦來加快算命的速度。他的占卜規則很簡單,規則是這樣的,輸入一個日期,然後依照下面的公式:
    M=月
    D=日
    S=(M*2+D)%3
  得到 S 的值,再依照 S 的值從 0 到 2 分別給與 普通、吉、大吉 等三種不同的運勢。

輸入說明
  月份及日期。

輸出說明
  運勢。

範例輸入
  1 1
  1 2

範例輸出
  普通
  吉




想一想,再看解答~

我的解題想法

  因為輸入的資料不確定有幾組,故使用迴圈 while。而 S 的值已確定是三個整數,我們使用 switch 分類。


程式碼
#include <stdio.h>
int main(void){
    int m,d;
    while(~scanf("%d%d",&m,&d)){
        switch((m*2+d)%3){
            case 0:
                printf("普通\n");
                break;
            case 1:
                printf("吉\n");
                break;
            case 2:
                printf("大吉\n");
        }
    };
    return 0;
}
程式碼解析
#1:引入標準輸入/輸出串流。
#2:主程式開始,回傳引數int,沒有參數。
#3:宣告2個整數(int)變數「m」、「d」,範圍–2,147,483,648 到 2,147,483,647。
#4:迴圈 while 開始。使用 while 搭配 scanf 判斷資料是否結束。從標準輸入讀取格式化數據。讀取2個整數(%d%d),依序指定值給「m」、「d」。
#5:條件判斷式 switch 開始。判斷 S 值, S = ((m*2+d)%3)。
#6:第1個條件,是否等於 0。
#7:將格式化數據顯示到標準輸出。輸出字串並換行「"普通\n"」
#8:第1個條件 中斷點。
#9:第2個條件,是否等於 1。
#10:將格式化數據顯示到標準輸出。輸出字串並換行「"吉\n"」
#11:第2個條件 中斷點。
#12:第3個條件,是否等於 2。
#13:將格式化數據顯示到標準輸出。輸出字串並換行「"大吉\n"」
#14:條件判斷式 switch 結束。
#15:迴圈 while 結束。
#16:主程式回傳整數「0」。
#17:主程式結束。