今天是2023年4月11号,我们就用今天举例得出是2023年的第几天。
思路分析
1)我们想知道2023年4月11号是2023年的第几天,只需要把1到3月份的天数累加求和然后加上今天日期也就是11就可以算出2023年4月11号是2023年的第几天。
推广:
要算某年的某月某日是某年的第几天,只需要把某月的前几个月的天数相加然后加上某日就可以算出某年的某月某日是某年的第几天;可以得出一个公式。
算出某年的某月某日是某年第几天公式:
sum=前(N-1)个月份的天数之和加上x,N表示某月,x表示某日。
2)每年除了2月的天数不一样外其余11个月的天数不变,我们需要判断某年是闰年还是平年,用 来确定2月的天数是28天(平年)还是29天(闰年)。
3)每年的1月,3月,5月,7月,8月,10月,12月有31天。
每年的4月,6月,9月,11月有30天。
闰年2月有29天,平年2月有28天。
案例代码如下
#include <stdio.h>
#define N 12
void main(){
int i,j;
int year,month,day;
int sum=0;
int arr[N]={31,0,31,30,31,30,31,31,30,31,30,31};//2月的天数不确定就先定为0
printf("输入年月日,用空格隔开");
scanf("%d%d%d",&year,&month,&day);
if((year%4==0&&year%100!=0)||year%400==0){
arr[1]=29;
}//判断某年是闰年还是平年用来确定2月份的天数
else{//闰年2月有29天,平年2月有28天
arr[1]=28;
}
for(i=0;i<month-1;i++){
sum+=arr[i];/*假如想知道2023年4月11号是这2023年的第几天
先求出1月到3月的总天数*/
}
sum+=day;//1月到3月的总天数加上11就求出这一天是2023年的第几天
if(arr[1]==28){
printf("%d年是平年\n",year);
printf("%d年%d月%d号是%d年的%d天",year,month,day,year,sum);
}//打印输出2023年4月11号是2023年的第几天
else{
printf("%d年是闰年\n",year);
printf("%d年%d月%d号是%d年的第%d天",year,month,day,year,sum);
}
}
代码运行结果如下
2023年4月11号:
2008年8月8号: