1. 程式人生 > >(輸入年月日,輸出是這一年的第幾天)c語言程式

(輸入年月日,輸出是這一年的第幾天)c語言程式

做為一個學c語言的新手,今天學習了switch語句。當時老師說case語句後面如果不跟break;會按照順序執行,而這種結構也有它的優點,通過今天對這個程式的編寫,也對switch有了全新的認識;

/*
請分別輸入年月日三個數值,計算出這是這一年的第幾天?
(提示:要考慮閏年和2月的情況)
*/


#include <stdio.h>


void main()
{
int year=0,month=0,day=0,i=0,sum=0;
while(1)
{
printf("請輸入年份:");
scanf("%d",&year);
printf("請輸入月份:");
scanf("%d",&month);
printf("請輸入日期:");
scanf("%d",&day);


i=0;//i變數是為了控制月和日的格式是否輸入正確; 
switch(month) //判斷每個月的日期是否輸入正確; 
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if(day>0&&day<=31)
{
i=1;
}
break;
case 4:
case 6:
case 9:
case 11:
if(day>0&&day<=30)
{
i=1;
}
break;
case 2: //2月閏年可以輸入29日; 
if((year%4==0&&year%100!=0)||year%400==0)
{
if(day>0&&day<=29)
{
i=1;
}
}
else
{
if(day>0&&day<=28)
{
i=1;
}
}
break;
default: //如果輸入不是1-12月份,那麼月份輸入有誤; 
i=0;
break; 
}
if(i)//如果i變數為1,那麼輸入正確,否則重新輸入; 
{
break;
}
else
{
printf("請輸入正確的年月日!!!\n");
}
}



i=0;
switch(month) //把每個月的日期累加; 
{
case 12:
i=i+30;
case 11:
i=i+31;
case 10:
i=i+30;
case 9:
i=i+31;
case 8:
i=i+31;
case 7:
i=i+30;
case 6:
i=i+31;
case 5:
i=i+30;
case 4:
i=i+31;
case 3:
if((year%4==0&&year%100!=0)||year%400==0)
{
i=i+29;
}
else
{
i=i+28;
}
case 2:
i=i+31;
case 1: 
;
}


sum=i+day;

printf("%d年%d月%d日是%d年的第%d天\n!",year,month,day,year,sum);


}