编写程序实现对给定的某年某月某日,计算并输出它是这一年的第几天。给定的日期从键盘输入。
#include<stdio.h
int main()
{
int yy,mm,dd;
printf("请输入一个日期:");
scanf("%d %d %d",&yy,&mm,&dd);
int x,months,days; //x为计算闰年2月多算的一天,months为31天的月份个数
if((yy % 4 ==0 && yy % 100 != 0) || (yy % 400 == 0)) //判断是否为闰年
x += 1;
else if(mm == 2 && dd == 29) //判断年份是否合法
{
printf("该年份不是合法年份,请重新输入\n");
}
if(mm <= 8) //以8月为分界月
for(int i = 1;i < mm;i += 2)
++months;
else
{
months = 4;
for(int i = 8;i < mm; i += 2)
++months;
}
if(mm <= 2)
days = 30 * (mm - 1) + months + dd; //全部按照一个月30天计算,再分别加上31天的年份个数
else
days = 30 * (mm - 1) + months + dd + x-2; //-2是2月多算的两天
printf("该日期是%d年的第%d天",yy,days);
return 0;
}