//(主要中间的判断花了很多时间,虽然写得很差,还可以改进,但是可以记录下以后修改可以借鉴)
/* 【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天? */
#include<stdio.h>
int main()
{
int y,m,d,d2,dp,n,r;
printf("请输入年月日,/n哪一年:");
scanf("%d",&y);
printf("哪一月:");
scanf("%d",&m);
if(m<1||m>12)
{
printf("输入错误,系统退出!!");
return -1;
}
printf("哪一日:");
scanf("%d",&d);
if(y%400==0||(y%4==0&&y%100!=0))
{ //闰年是4的倍数,不是100倍数。
r=1; //可以使400的倍数
}
else
{
r=0;
}
switch(m)
{
case 1: dp=0;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 2: dp=31;
if(r=1)
{
if(d<1||d>29)
{
printf("输入错误,系统退出!!");
return -1;
}
}
else if(r=0)
{
if(d<1||d>28)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 3: dp=59;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 4: dp=90;
if(d<1||d>30)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 5: dp=120;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 6: dp=151;
if(d<1||d>30)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 7: dp=181;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 8: dp=212;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 9: dp=243;
if(d<1||d>30)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 10: dp=273;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 11:dp=304;
if(d<1||d>30)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
case 12: dp=334;
if(d<1||d>31)
{
printf("输入错误,系统退出!!");
return -1;
}
else
break;
}
d2=d;
n=d2+dp;
if(m>2&&r>0){
n++;
}
printf("%d年%d月%d日的是当年的第%d天",y,m,d,n);
}
}