Entries

[程式]A-29月份與天數

[A-29]月份與天數

天文曆法將一年分為十二個月,規定單數月為 31 日,雙數月為 30 ,
每四年設置一閏年, 閏年的二月加多一日為 29 日。
閏年定義為 : 四年一閏,百年不閏,四百年一閏。
試撰寫一程式,輸入年份 Y 和月份 M (1 ≦ M ≦ 12) ,
並輸出該月份的天數 D(1 ≦ D ≦ 31)

-----------------------------------------------------------------------------------------------------
程式碼:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int y;
int m;

printf("請輸入年份:");
scanf("%d",&y);
/*判斷是否為400年一潤 ,如果為否
則判斷是否為四年一潤,但非100年一潤*/
if(y % 400 != 0&&y>=0)//並非400年一潤
{ if (y % 4 == 0 && y % 100 != 0)//四年一潤,但非100年一潤
{ printf("請輸入月份:");
scanf("%d",&m);
if(m == 1 ||m == 3||m == 5||m == 7||m == 8||m == 10||m == 12)//31天大月
{printf("%d 年 %d 月,一共有31天。\n",y,m);}

else if (m == 4||m == 6||m == 9||m == 11)//30天小月
{printf("%d 年 %d 月,一共有30天。\n",y,m);}

else if (m == 2)//二月特殊
{printf("%d 年 %d 月,一共有29天。\n",y,m);}

else//除錯
{printf("輸入錯誤,沒有這個月份。\n");}
}
else
{
printf("請輸入月份:");
scanf("%d",&m);
if(m == 1 ||m == 3||m == 5||m == 7||m == 8||m == 10||m == 12)
{printf("%d 年 %d 月,一共有31天。\n",y,m);}

else if (m == 4||m == 6||m == 9||m == 11)
{printf("%d 年 %d 月,一共有30天。\n",y,m);}

else if (m == 2)
{printf("%d 年 %d 月,一共有28天。\n",y,m);}
else
{printf("輸入錯誤,沒有這個月份。\n");}
}
}

else if (y%400 == 0&&y>=0)//四百年閏
{
printf("請輸入月份:");
scanf("%d",&m);
if(m == 1 ||m == 3||m == 5||m == 7||m == 8||m == 10||m == 12)
{printf("%d 年 %d 月,一共有31天。\n",y,m);}

else if (m == 4||m == 6||m == 9||m == 11)
{printf("%d 年 %d 月,一共有30天。\n",y,m);}

else if (m == 2)
{printf("%d 年 %d 月,一共有29天。\n",y,m);}
else
{printf("輸入錯誤,沒有這個月份。\n");}
}
else
{printf("輸入錯誤,年份必須為正數。\n");}

system("PAUSE");
return 0;
}



執行圖:
[A-29]

------------------------------------------------------------------------------------------------------------------------

If else應用

留言

發表留言

發表留言
只對管理員顯示

引用

引用 URL
http://tom4318679.blog124.fc2.com/tb.php/14-f617f693
引用此文章(FC2部落格用戶)

Appendix

魔の紹介

魔王

Author:魔王

台湾人。
遊戯王のカードとアニソンが大好き。
本網站建議使用1024*768解析度
FireFox瀏覽,以免有文字錯位現象

魔の囁き

魔と話し

魔のplunk

魔の検索