| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 725 人关注过本帖
标题:杭电1201,我用别的方法错了,但是,我想不通为什么是错的,求牛人帮我解惑 ...
只看楼主 加入收藏
江风
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2010-9-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
杭电1201,我用别的方法错了,但是,我想不通为什么是错的,求牛人帮我解惑……
#include <stdio.h>

int isleap(int years){//判断是否为闰年
    if(years % 400 == 0 || (years % 4 ==0 && years % 100 != 0))  
        return 1;
    else
        return 0;
}

int main(){
    int sum;
    int year, month, day, k, s, e;
    int num,i;//T
    scanf("%d",&num);
    for(i=0;i<num;i++){
        scanf("%d-%d-%d",&year, &month, &day);
        s=isleap(year); e=isleap(year+18); sum = 365*18+4;//每个平年出生的人活到18岁所经过的天数,由于不管何年出生到18岁都至少经过4个闰年故加4

        if(s ==1 && month==2 && day==29)
        {
            printf("-1\n");
            continue;
        }        
         if(s == 1 || year % 2 == 0) sum+=1;//若是出生为闰年或者偶数的平年,则它的18岁中将有5个闰年
         //这一步为什么出错啊,在另一种借鉴的方法里把这个替换掉就可以了,但是这一句错在哪里

        if(s==1 && month>2) sum-=1;
        if(e==1 && month>2) sum+=1;

        printf("%d\n",sum);

    }
    return 0;
}
搜索更多相关主题的帖子: 解惑 牛人帮 
2010-09-11 00:23
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:10 
如果出生在1896年呢?似乎不是5个闰年

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2010-09-11 00:27
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:10 
好像1897年生的好像只有三个闰年。。。

算法有点错误

[ 本帖最后由 encounter 于 2010-9-11 13:04 编辑 ]

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-11 12:45
江风
Rank: 1
等 级:新手上路
帖 子:10
专家分:7
注 册:2010-9-10
收藏
得分:0 
回复 2楼 御坂美琴
哦,对啊,原来1900年不是,我的失误,我原本错以为闰年为每四年一次,看来我错了,谢谢你的帮忙哦

行成于思而毁于随,业精于而荒于嬉
2010-09-11 16:55
快速回复:杭电1201,我用别的方法错了,但是,我想不通为什么是错的,求牛人帮我 ...
数据加载中...
 
   



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

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