标题:问一个关于年与日的问题,里面有一行码看不懂
只看楼主
燃烧的键盘
Rank: 1
等 级:新手上路
帖 子:9
专家分:6
注 册:2012-12-27
结帖率:0
已结贴  问题点数:20 回复次数:6 
问一个关于年与日的问题,里面有一行码看不懂
#include <stdio.h>
void main ()
{
    int y,m,d,c,s,w;
    printf("请输入8位年月日,以空格隔开:");
    scanf("%d%d%d",&y,&m,&d);
    if (m==1) c=d;
    else if (m==2) c=31+d;
    else if (m==3) c=31+28+d;
    else if (m==4) c=31+28+31+d;
    else if (m==5) c=31+28+31+30+d;
    else if (m==6) c=31+28+31+30+31+d;
    else if (m==7) c=31+28+31+30+31+30+d;
    else if (m==8) c=31+28+31+30+31+30+31+d;
    else if (m==9) c=31+28+31+30+31+30+31+31+d;
    else if (m==10) c=31+28+31+30+31+30+31+31+30+d;
    else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;
    else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;
    if (m>2)
    {if (y%100==0) {if (y%400==0) c=c+1;}
    else if (y%4==0) c=c+1;}
    s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;
    w=s%7;
    switch (w)
    {
    case 0: printf("星期日");break;
    case 1: printf("星期一");break;
    case 2: printf("星期二");break;
    case 3: printf("星期三");break;
    case 4: printf("星期四");break;
    case 5: printf("星期五");break;
    case 6: printf("星期六");break;
        printf("\n");
    }
}
 就是这一行s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;,这里面的s是什么意思呀
搜索更多相关主题的帖子: void include 年月日 
2013-03-27 17:39
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:7 
就是这一行s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;,这里面的s是什么意思呀

前面的是求输入的年的前面的年天数:四年一闰,百年不闰,四百年再闰,这是闰年的规律。
(y-1)*365是求全部按不是闰年的天数,(y-1)/4是所有能被4整除的年份,这样算明显多算了百年的情况,
所以要减去(y-1)/100这个是算百年的情况,但是四百年也在百年的情况中,又多减了,所以要再加上四百年的情况(y-1)/400,
最后再把当年的天数c加上,就得到公元0000年到输入日期的天数了。
2013-03-27 17:53
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:7 
这是计算星期几的一个公式  可以百度一下

DO IT YOURSELF !
2013-03-27 19:16
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
得分:7 
还是自己查吧,不是程序问题,是对年月日的理解问题

三十年河东,三十年河西,莫欺少年穷!
2013-03-27 19:34
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
得分:0 
回复 3楼 wp231957
我想问个问题:公元1年1月1日是周几?是周一吗?这个有什么根据吗?
2013-03-27 19:59
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
公元纪年的第一天 貌似是星期六
不过我不使用泰勒公式计算,但是也恰住一个基础数  然后向后推

[ 本帖最后由 wp231957 于 2013-3-27 20:23 编辑 ]

DO IT YOURSELF !
2013-03-27 20:03
燃烧的键盘
Rank: 1
等 级:新手上路
帖 子:9
专家分:6
注 册:2012-12-27
得分:0 
谢谢各位,我明白了
2013-03-27 20:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-402087-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved