编程序实现:输入一个年份,求出从公元1年1月1日到这一年的1月1日总共有多少天,限定不能使用循环结构。假定从公元第一天开始,就实施格里高利历法。格里高利历法的置闰规则是400年97闰,也可以概括为:四闰百不闰,四百闰。
#include <stdio.h>
long getDays(int year){
if(year==1){ //如果为公元1年,则天数为0
return 0;
}
else{
if(((year%4==0)&&(year%100!=0))||(year%400==0)){ //如果是公元年份 能被4整除,且不能被100整除,或者公元年份能别400整除则为闰年,即一年有366天
return (long)(366+getDays(year-1));
}
else{ //其他情况是平年365天
return (long)(365+getDays(year-1));
}
}
}
int main(void){
int year;
printf("请输入一个公元年份:");
scanf("%d",&year);
// printf("year=%d\n",year);
// https://www.zhihu.com/question/514240646
// https://baijiahao.baidu.com/s?id=1637775291345587615&wfr=spider&for=pc
printf("利用格里高利历法,从公元1年1月1日到公元%d年1月1日总共有%ld天。\n",year,getDays(year));
return 0;
}