通过键盘输入某年某月某日判断是第多少天?第几周?星期几?

来源:互联网 发布:横截面数据画折线图 编辑:程序博客网 时间:2024/05/01 06:56

/* function1 */
int pdrn(int str[])
{
int f1=0;
if(str[0]%4==0&&str[0]%100!=0||str[0]%400==0)
f1=1;
return f1;
}

/* function2 */
int pdyf(int str[])
{
int flag;
for(;str[1]<1||str[1]>12;)
{
printf("Month error! please input a data to month again: /a");
scanf("%d",&str[1]);
}
flag=pdrn(str);
if(flag&&str[1]==2)
for(;str[2]<=0||str[2]>=30;)
{
printf("WARING!/nDate error, %dyear is leap year, so days can't big than 29./n",str[0]);
printf("Input a data to month: /a");
scanf("%d",&str[2]);
}
else if(str[1]==2&&!flag)
for(;str[2]<=0||str[2]>=29;)
{
printf("WARING!/nDate error, %dyear isn't leap year, so days can't big than 28./n",str[0]);
printf("Input a data to month: /a");
scanf("%d",&str[2]);
}
else if(str[1]==4||str[1]==6||str[1]==9||str[1]==11)
for(;str[2]<=0||str[2]>=31;)
{
printf("WARING!/n");
printf("Date error, days must small than 31./n");
printf("Please input a data to date: /a");
scanf("%d",&str[2]);
}
else for(;str[2]<=0||str[2]>=32;)
{
printf("WARING!/nDate error, days must small than 32./nPlease input a data to date: /a");
scanf("%d",&str[2]);
}
}

/* function3 */
int oday(int str[],int tdays[])
{
int i,sum=0;
for(i=0;i<str[1];i++)
sum=sum+tdays[i];
sum+=str[2];
return (sum);
}

/* function4 */
void wk(int wek)
{
if(wek==1) printf("Monday./n");
else if(wek==2) printf("Tuesday./n");
else if(wek==3) printf("Wednesday./n");
else if(wek==4) printf("Thursday./n");
else if(wek==5) printf("Friday./n");
else if(wek==6) printf("Saturday./n");
else printf("Sunday./n");
}

main()
{
int wek,week,total,i,day,flag,str[3],tdays[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
printf("Please input time(YYYY MM DD): ");
for(i=0;i<3;i++)
scanf("%d",&str[i]);
system("cls");
pdyf(str);
flag=pdrn(str);
printf("Source date: %d-%d-%d/n",str[0],str[1],str[2]);
total=oday(str,tdays);
if(str[2]>=2&&str[1]!=2&&flag) total=total+1;
wek=(str[0]-1+(str[0]-1)/4-(str[0]-1)/100+(str[0]-1)/400+total)%7;
week=total/7;
if(week<1) week=1;
else if(wek>=0&&wek<=6) week+=1;
if(flag)
{
printf("Year %d is leap year./nIn year %d, %d/%-2d is the %dth day./nThe %dth week, %dth day, ",str[0],str[0],str[2],str[1],total,week,wek+1);
wk(wek);
}
else
{
printf("Year %d isn't leap year./nIn year %d, %d/%-2d is the %dth day./nThe %dth week, %dth day, ",str[0],str[0],str[2],str[1],total,week,wek+1);
wk(wek);
}