| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6125 人关注过本帖
标题:关于黑色星期5的思路
取消只看楼主 加入收藏
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
结帖率:57.14%
收藏
已结贴  问题点数:20 回复次数:2 
关于黑色星期5的思路
算法训练 黑色星期五
问题描述
  有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。 输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
  输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
输入输出样例
样例输入
1998
样例输出
3
这题的思路是什么样的 求出总天数后要怎么判断每个月的13号是不是周五   网上有说把天数对7求余的 那是什么意思  求余出来的是一共有几个星期吧
搜索更多相关主题的帖子: 黑色星期五 西方人 吉利 朋友 
2016-01-27 14:05
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
回复 2楼 beyondyf
它这个规定1998年1月1号为星期四,比如就输入1998 1998平年为365天  这个对天数求余怎么判断是星期几
2016-01-27 17:32
不同认为
Rank: 1
等 级:新手上路
帖 子:93
专家分:3
注 册:2015-11-25
收藏
得分:0 
没看懂两位的代码  有个网上看的代码是这样的
#include <stdio.h>

int getWeekOfFirstDay(int year)
{
    //已知1998年1月1日是星期四
    int i=1998,week=3;
    int days=0;
   
    for(i=1998;i<year;i++)
    {
        if(i%400==0||(i%4==0&&i%100!=0))
        days+=366;
        else
        days+=365;
    }
   
    return (days+week)%7;
}

void printBlackFridayTimes(int year)
{
    int day[2][12]={{31,28,31,30,31,30,31,31,30,31,30},{31,29,31,30,31,30,31,31,30,31,30}};
    int week=getWeekOfFirstDay(year),flag=year%400==0||(year%4==0&&year%100!=0)?1:0;
    int times=0,i,days=0;
   
    //遍历12个月
    for(i=0;i<12;i++)
    {
        //判断每个月13号是否是黑色星期五
        if((days+12+week)%7==4)
        times++;
        
        days+=day[flag][i];
    }
   
    printf("%d\n",times);
    return ;
}

main()
{
    int year;

    scanf("%d",&year);
    printBlackFridayTimes(year);
   
    return 0;
}
 getWeekOfFirstDa函数里的week为什么要等于3  返回值为什么是(days+week)%7, 还有这个 if((days+12+week)%7==4)判断是不是黑色星期五这个式子是怎么推出来的
     
2016-01-27 22:12
快速回复:关于黑色星期5的思路
数据加载中...
 
   



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

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