/* 1.輸入年月日,編寫程序計算所輸日期是當年的第幾天 */
/* 2.已知列車隔日發車,且1/1/2006不發車(無ticket),如果所輸入數據在此日期之后,則輸出有沒有車票,否則僅輸出上一步結果。*/
/* month/date/year is which day of the year */
/* is there a ticket today(2006.01.01--yeath!)?? */
#include <stdio.h>
int year,month,date;
void input()
/* read input number and judge is it legal*/
{
?puts("please input year,month,date:");
?scanf("%d%d%d",&year,&month,&date);
?while(date>31||date<1||month>12||month<1)
?{
? puts("month OR date Wrong!!!");
? puts("please input year,month,date:");
? scanf("%d%d%d",&year,&month,&date);
?}
}
int isleapyear(int year)??????
/* is the year a leapyear */
{if(year%4==0&&year%100!=0||year%400==0) return(1);
?else return(0);
}
int days(int year,int month,int date)
/* Calculate the days since Jan,1,year.(you input the "year") */
{int day;
?switch(month)
?{
? case 1:day=date;break;
? case 2:day=date+31;break;
? case 3:day=date+59;break;
? case 4:day=date+90;break;
? case 5:day=date+120;break;
? case 6:day=date+151;break;
? case 7:day=date+181;break;
? case 8:day=date+212;break;
? case 9:day=date+243;break;
? case 10:day=date+273;break;
? case 11:day=date+304;break;
? case 12:day=date+334;break;
? default:printf("Data error!!!");
?}
if(isleapyear(year)&&month>2) day+=1;
return(day);
}
int main(void)
{
?int i,m=0,n;
? /* "i" is a counter;"m" is the days since Jan,1,2006 ;"n"the days since Jan,1,year.*/
?input();
?n=days(year,month,date);
?if(year>2005)?????? /*is there a m ticket today which is later than 2006.01.20 */
?{
? for (i=2006;i<year;i++)
? /* add the days from 2006 to year-1.(if it is a leapyear add 366,or add 365)*/
?? if(isleapyear(i)) m+=366;
?? else m+=365;????
? m=m+n-days(2006,1,1);
?
? if(m%2==1)puts("Ticket:Yeath!!/n");
?
? else puts("Ticket:Sorry!!!/n");
?}
?printf("%d/%d/%d? day:%d/n",month,date,year,n);
?
?puts("Press anykey to quit!");
?
?getch();
return 0;
}
? PS:1.本人初學,不求其他只愿代碼能夠盡量簡潔高效,歡迎各位多多批評、多多挑毛病^_^。加我QQ 505011298。
?? 2.文章全部為原創,過程中可能有些文章參考了某些文章的思路,但本人宗旨和目標只是:a.不如我之人可以向我學習b.希望高手可以對我指點一二,以求做到最好;c.資源共享;別無其他。
?? 3.TC2.0下通過。當然,解法很多,如果哪位找到更好方法的話,如若可以分享我將很榮幸。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/perforce/archive/2007/04/26/1585191.aspx