| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 633 人关注过本帖
标题:问一个关于年与日的问题,里面有一行码看不懂
只看楼主 加入收藏
燃烧的键盘
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册: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
快速回复:问一个关于年与日的问题,里面有一行码看不懂
数据加载中...
 
   



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

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