| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 688 人关注过本帖
标题:【求助】求大家帮我给代码加点注释,在线等
只看楼主 加入收藏
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
【求助】求大家帮我给代码加点注释,在线等
#include <stdio.h>

int is_leap_year(int y)
{
    return y % 400 == 0 || (y % 4 == 0 && y % 100 != 0);
}

int get_days(int y, int m, int d)
{
    int month[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
    if (m > 2 && is_leap_year(y))
        ++d;
    return y * 365 + y / 4 - y / 100 + y / 400 + month[m - 1] + d;/*这个地方不明白,麻烦了,多谢*/
}

int main(void)
{
    int by, bm, bd, cy, cm, cd;

    puts("请输入自己的生日与今天的日期,格式为yyyy-mm-dd,两组日期以空格分隔:");
    while (scanf("%d-%d-%d %d-%d-%d",
                &by, &bm, &bd, &cy, &cm, &cd) == 6)
        printf("相差%d天。\n", get_days(cy, cm, cd) - get_days(by, bm, bd));
    return 0;
}/*代码功能是算一个人活了多少天,根据他的出生年月日和现在的年月日*/

[ 本帖最后由 longlong89 于 2009-10-29 18:47 编辑 ]
搜索更多相关主题的帖子: 在线 代码 注释 
2009-10-29 18:00
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:0 
pgy,来加注释啦
2009-10-29 18:01
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
看了几天还不明白,麻烦大家了

想象力征服世界
2009-10-29 18:04
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:5 
y * 365 + y / 4 - y / 100 + y / 400 + month[m - 1] + d;
总共有y年,如果每年都是365天,则应该是y*365,但其中可能会有闰年,每多一次闰年就多出一天,符合y/4的是闰年,多一天,符合y/400,也是闰年,也加一天。符合y/100的不是,而前面y/4里加过了,所以再减去一天。一会上课去,自己先说了说自己的理解。
2009-10-29 18:07
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
还是不明白,多出一天用y/4和y/400,少一天用y/100怎么表示啊,有点转不过来能不能说详细点
先谢谢楼上的大哥

想象力征服世界
2009-10-29 18:15
fxjgood
Rank: 1
来 自:陕西
等 级:新手上路
帖 子:1
专家分:0
注 册:2009-10-25
收藏
得分:0 
看不懂!!
2009-10-29 18:15
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
为了今晚睡好觉 在线等!
多谢大家啦

想象力征服世界
2009-10-29 18:37
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
收藏
得分:15 
y * 365 + y / 4 - y / 100 + y / 400 + month[m - 1] + d;

y / 4,为 y 中有几个四年,
y / 100,为 y 中有几个一百年,
y / 400,为 y 中有几个四百年,

a. 按平年算得天数。
b. 先按每四年一个闰年,计算有几年是闰年。
c. 再按每一百年不是闰年,计算有几年不是闰年。
d. 再按每四百年一个闰年,计算有几年是闰年。

按照闰年计算公式,并不是能被100整除的就不是闰年,如果还能被400整除,那这也是闰年。(能被400整除的一定也能被100整除)

a + b - c + d == 从1年1月1日,到今天的总天数。

  
//------------------------------------------------------------------
闰年计算方法:
平年:356  
闰年:366  
 
1900不是润年,2000是闰年。 // 能被100整除,且能被400整除的是闰年。  
1995不是闰年,1996是闰年。 // 不能被100整除,但能被4整除的是闰年。  
  

—>〉Sun〈<—
2009-10-29 18:59
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
多谢上楼,结贴了

想象力征服世界
2009-10-29 19:09
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
以下是引用cosdos在2009-10-29 18:59:17的发言:

y * 365 + y / 4 - y / 100 + y / 400 + month[m - 1] + d;

y / 4,为 y 中有几个四年,
y / 100,为 y 中有几个一百年,
y / 400,为 y 中有几个四百年,

a. 按平年算得天数。
b. 先按每四年一个闰年,计算有几 ...
有点急躁
有一点不是很明白,y*365既然已经包括了所有平年,为什么还要减去y/100(不是闰年的)?不是闰年既是平年,平年已经包括在y*365里了啊

想象力征服世界
2009-10-29 19:19
快速回复:【求助】求大家帮我给代码加点注释,在线等
数据加载中...
 
   



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

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