话不多说,直接上代码,小白作者一枚,有错误评论一下哦
#include <stdio.h>
#include <stdlib.h>
struct riqi
{
int year;
int month;
int day;
}p;
int main()
{
int a;
printf("请输入年月日(xx.xx.xx):");
scanf_s("%d.%d.%d", &p.year, &p.month, &p.day);
switch (p.month)
{
case 1:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 0;
break;
case 2:
if ((p.year / 400 == 0 || (p.year / 4 == 0 && p.year / 100 != 0)) && p.month > 2)
{
if (p.day > 3)
{
printf("日期错误");
exit(1);
}
}
else
{
if (p.day > 28)
{
printf("日期错误");
exit(1);
}
}
a = 31;
break;
case 3:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 59;
break;
case 4:
if (p.day > 30)
{
printf("日期错误");
exit(1);
}
a = 90;
break;
case 5:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 120;
break;
case 6:
if (p.day > 30)
{
printf("日期错误");
exit(1);
}
a = 151;
break;
case 7:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 181;
break;
case 8:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 212;
break;
case 9:
if (p.day > 30)
{
printf("日期错误");
exit(1);
}
a = 243;
break;
case 10:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 273;
break;
case 11:
if (p.day > 30)
{
printf("日期错误");
exit(1);
}
a = 304;
break;
case 12:
if (p.day > 31)
{
printf("日期错误");
exit(1);
}
a = 334;
break;
default:
printf("日期错误");
exit(1);
}
a += p.day;
if ((p.year / 400 == 0 || (p.year / 4 == 0 && p.year / 100 != 0)) && p.month > 2)
a++;
printf("是本年的第%d天", a);
return 0;
}