2015年12月4日 星期五

d070:文文的求婚--續集 (0 尾版) (35)

d070: 文文的求婚--續集 (0 尾版) (35)

更新時間:2016/12/22

內容
  承 a004,珊珊終於學成歸國了,文文的考驗時刻也到了。走出了迎客大廳,珊珊問:「What type of year was I born in?」文文很有自信的回答:「閏年!」可是珊珊卻說:「No, It was a LEAP YEAR!」看來文文要娶到珊珊,還得先把英文練一練。

輸入說明
  輸入的每一行有一個正整數 y,代表珊珊生日的西元年份。輸入的最後一行有一個 0,代表輸入的結束,這個數字請勿做任何處理。

輸出說明
  對於所輸入的每個 y,要各別輸出一行。若 y 是閏年,請於該行輸出「a leap year」,否則請輸出「a normal year」。

範例輸入
  1992
  1993
  1900
  2000
  0

範例輸出
  a leap year
  a normal year
  a normal year
  a leap year

提示

背景知識
  迴圈




想一想,再看解答~

我的解題想法

  西元年被4整除且不被100整除,或被400整除者即為閏年。。


程式碼
#include <stdio.h>
int main(void){
    int y;
    scanf("%d",&y);
    while(y){
        printf("%s\n",(y%4==0 && y%100!=0) | (y%400==0) ? "a leap year" : "a normal year");
        scanf("%d",&y);
    };
    return 0;
}
程式碼解析
#1:引入標準輸入/輸出串流。
#2:主程式開始,回傳引數int,沒有參數。
#3:宣告1個整數(int)變數「y」,範圍–2,147,483,648 到 2,147,483,647。
#4:從標準輸入讀取格式化數據。讀取1個整數(%d),指定值給「y」。
#5:迴圈 while 開始。使用 while 判斷取得的資料是否為 0。在 C 語言中,0 為 false,其餘數字 為 true。
#6:將格式化數據顯示到標準輸出。輸出1個字串並換行(%s\n)「(y%4==0 && y%100!=0) | (y%400==0) ? "a leap year" : "a normal year"」。如果 (y%4==0 && y%100!=0) | (y%400==0) 成立,輸出 a leap year ;否則輸出 a normal year。
#7:從標準輸入讀取格式化數據。讀取1個整數(%d),指定值給「y」。讀取下一個資料讓 while 判斷是否結束。
#8:迴圈 while 結束。
#9:主程式回傳整數「0」。
#10:主程式結束。