编程知识 cdmana.com

為什麼代碼輸出的日期出錯

#include<stdio.h>#include<stdlib.h>int nian(int x)//判斷閏年 ,x是年份 {    if(x%4==0&&x%100!=0)    return(366);//閏年     else    return(365);}int yue(int x,int y)//x是年份,y是月份 {    int a;    if(x==366)    {        if(y==1) a=0;        if(y==2) a=31;        if(y==3) a=60;        if(y==4) a=91;        if(y==5) a=121;        if(y==6) a=152;        if(y==7) a=182;        if(y==8) a=213;        if(y==9) a=244;        if(y==10) a=274;        if(y==11) a=305;        if(y==12) a=335;    }    if(x==365)    {        if(y==1) a=0;        if(y==2) a=31;        if(y==3) a=59;        if(y==4) a=90;        if(y==5) a=120;        if(y==6) a=151;        if(y==7) a=181;        if(y==8) a=212;        if(y==9) a=243;        if(y==10) a=273;        if(y==11) a=304;        if(y==12) a=334;    }    return(a);}int tian(int z,int x,int y)//z是年份,x是月份,y是號 {    int a;    x=yue(nian(z),x);    a=x+y;    return(a);}void xq(int x,int y,int z)//x是年份,y是月份 ,z是號 {    int i,d=0;//d是總天數     for(i=1;i<=x-1;i++)    {        d=d+nian(i);    }    d=d+tian(x,y,z);    if(d%7==0) printf("星期天,");    if(d%7==6) printf("星期六,");    if(d%7==5) printf("星期五,");    if(d%7==4) printf("星期四,");    if(d%7==3) printf("星期三,");    if(d%7==2) printf("星期二,");    if(d%7==1) printf("星期一,");}int main(){    int a,b,c;    scanf("%d%d%d",&a,&b,&c);    xq(a,b,c);    printf("這是%d年的第%d天",a,tian(a,b,c));    return 0;}

當a=2021,b=12,c=17,輸出:星期五,這是2021年的第351天
為什麼這串函數輸出的是星期天




參考答案1:

判斷閏年不對,正確要加400年的條件((!(年 % 4) && 年 % 100) || !(年 % 400))




參考答案2:

版权声明
本文为[CSDN問答]所创,转载请带上原文链接,感谢
https://cdmana.com/2021/12/202112181510220130.html

Tags 日期
Scroll to Top