请问谁有办法优化一下
题目是输入某年某月某日,判断这一天是这一年的第几天?不改思路
#include<stdio.h>
int main(void)
{
int x,y,z,n;
printf("请输入年月日:");
scanf("%d%d%d",&z,&y,&x);
if(x>0&&y>0&&z>0&&x<31&&y<=12)
{
if((z%4==0&&z%100!=0)||(z%400==0))
{
if(y==1)
{
n=x+(y-1)*31;
printf("是%d年的第%d天。\n",z,n);
}
else if(y==2&&x<28)
{
n=x+(y-1)*31;
printf("是%d年的第%d天。\n",z,n);
}
else if(y%2==0)
{
if(x<=30)
{
if(y<8)
n=x+y/2*31+28+(y/2-1)*30;
else if(y<12)
n=x+31*4+30*2+28+(y/2-3)*31+(y/2-4)*30;
printf("是%d年的第%d天。\n",z,n);
}
else
printf("你的输入有误!\n请从新执行程序!\n");
}
else
{
if(x<=31)
{
if(y<8)
n=x+y/2*31+28+(y/2-1)*30;
else if(y<=12)
n=x+31*4+30*2+28+(y/2-3)*31+(y/2-4)*30;
printf("是%d年的第%d天。\n",z,n);
}
else
printf("你的输入有误!\n请从新执行程序!\n");
}
}
else
{
if(y==1)
{
n=x+(y-1)*31;
printf("是%d年的第%d天。\n",z,n);
}
else if(y==2&&x<29)
{
n=x+(y-1)*31;
printf("是%d年的第%d天。\n",z,n);
}
else if(y%2==0)
{
if(x<=30)
{
if(y<8)
n=x+y/2*31+29+(y/2-1)*30;
else if(y<12)
n=x+31*4+30*2+29+(y/2-3)*31+(y/2-4)*30;
printf("是%d年的第%d天。\n",z,n);
}
else
printf("你的输入有误!\n请从新执行程序!\n");
}
else
{
if(x<=31)
{
if(y<8)
n=x+y/2*31+29+(y/2-1)*30;
else if(y<=12)
n=x+31*4+30*2+29+(y/2-3)*31+(y/2-4)*30;
printf("是%d年的第%d天。\n",z,n);
}
else
printf("你的输入有误!\n请从新执行程序!\n");
}
}
}
else
printf("你的输入有误!\n请从新执行程序!\n");
return 0;
}