| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4781 人关注过本帖, 1 人收藏
标题:【新手问题】功能:输入出生年月日与现在年月日,输出此人人生已过去多少天
只看楼主 加入收藏
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
十楼代码不对,算我的日期的时候差了四天。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-24 18:48
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
= =非得贴个好点的代码某些人才死心……
稍等,月数组有误…………已修正。

程序代码:
#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;
}




[ 本帖最后由 StarWing83 于 2009-10-24 19:12 编辑 ]

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-24 18:54
xiaowenhuman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:101
专家分:104
注 册:2009-5-10
收藏
得分:0 
  if(p1.year>2||(p1.month==2&&p1.day==30)) 这个是他生那年如果是闰年的话的判断,但是有可能这人是2月29号生的,谢谢你,这里错了应该是 if(p1.year>2||(p1.month==2&&p1.day==29))
2009-10-24 18:58
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:0 
不可以哦
没有输出

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

  if(p1.year>2||(p1.month==2&&p1.day==30)) 这个是他生那年如果是闰年的话的判断,但是有可能这人是2月29号生的,谢谢你,这里错了应该是 if(p1.year>2||(p1.month==2&&p1.day==29))
p1.year>2这个是怎么判断的,我还是不明白

想象力征服世界
2009-10-24 19:11
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
12L代码已修改。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-24 19:16
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
  int month[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
空间换时间的算法

我可好玩啦...不信你玩玩^_^
2009-10-24 19:16
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
可是运算速度肯定比4L的快,而且肯定比4L的占的空间少。

8L的不评论。错误的算法。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-24 19:18
pgy
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:C
等 级:小飞侠
威 望:8
帖 子:1248
专家分:2329
注 册:2009-9-23
收藏
得分:0 
回复 18楼 StarWing83
为什么在算当前日期的时候都不用系统函数getdate
更方便。再到12楼改

我可好玩啦...不信你玩玩^_^
2009-10-24 19:20
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
系统函数麻烦。getdate不是标准函数,不可移植。而标准的localtime函数则比较麻烦。

专心编程………
飞燕算法初级群:3996098
我的Blog
2009-10-24 19:22
快速回复:【新手问题】功能:输入出生年月日与现在年月日,输出此人人生已过去多 ...
数据加载中...
 
   



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

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