求解输入一个年份,求出从公元1年1月1日到这一年的1月1日总共有多少天

编程序实现:输入一个年份,求出从公元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整除则为闰年,即一年有366return (long)(366+getDays(year-1));
        }
        else{ //其他情况是平年365return (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;
}

img