首页 > 其他分享 >北理工乐学 43. 【日期】黑色星期五(数组)

北理工乐学 43. 【日期】黑色星期五(数组)

时间:2022-11-28 16:45:40浏览次数:65  
标签:case int 31 43 month break 乐学 result 北理工

43. 【日期】黑色星期五(数组)

在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的十三日又恰逢星期五就叫"黑色星期五”。

输入:

    年份

输出:

    判断该年是否包含黑色星期五,如包含,给出具体日期

  测试输入 期待的输出 时间限制 内存限制 额外进程
测试用例 1 以文本方式显示
  1. 2006↵
以文本方式显示
  1. There are 2 Black Fridays in year 2006.↵
  2. They are:↵
  3. 2006/1/13↵
  4. 2006/10/13↵
1秒 64M 0

 

代码如下:

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>
#define DAY 13
int common_month(int month);
int leap(int i);
int date(int year, int month, int day);
int main(void)
{
    /*判断每年的1月13号是不是星期五,2月13号……直到12月13号,是的话,counter++
    * 引用21题的代码,“根据日期求星期”,在这个程序中,星期一返回1,星期二返回2……星期日返回0
    */
    int year, month;
    scanf("%d", &year);
    int counter = 0;
    int m[12] = { 0 };
    for (month = 1; month <= 12; month++) {
        if (5 == date(year, month, DAY)) {
            counter++;
            m[counter] = month;
        }
    }
    printf("There are %d Black Fridays in year %d.\n", counter, year);
    printf("They are:\n");
    for (int i = 1; m[i] != 0; i++)
        printf("%d/%d/%d\n", year, m[i], DAY);
    return 0;
}
int date(int year,int month,int day)
{
    //已知1900年1月1日为星期一   
    const int date = 1900;
    /*int year, month, day;
    scanf("%d %d %d", &year, &month, &day);*/
    int sum = 0;
    int i = year;
    //累加年的天数    
    for (i = year; i > date; i--) {
        sum += leap(i - 1);
    }
    //累加月的天数    
    if (leap(year) == 365) {    //平年  
        for (i = 1; i < month; i++) {
            sum += common_month(i);
        }
    }
    else {                  //闰年  
        for (i = 1; i < month; i++) {
            sum += common_month(i);
        }
        if (month > 2) {
            sum += 1;
        }
    }
    //累加日的天数    
    sum += day;
    int weekday = sum % 7;
    return weekday;
}
int leap(int i)
{
    int result = 365;
    if ((i % 4 == 0 && i % 100 != 0) || i % 400 == 0) {
        result = 366;
    }
    return result;
}
int common_month(int month)
{
    int result = 0;
    switch (month) {
    case 1:
        result = 31;
        break;
    case 2:
        result = 28;
        break;
    case 3:
        result = 31;
        break;
    case 4:
        result = 30;
        break;
    case 5:
        result = 31;
        break;
    case 6:
        result = 30;
        break;
    case 7:
        result = 31;
        break;
    case 8:
        result = 31;
        break;
    case 9:
        result = 30;
        break;
    case 10:
        result = 31;
        break;
    case 11:
        result = 30;
        break;
    case 12:
        result = 31;
        break;
    }
    return result;
}

 

标签:case,int,31,43,month,break,乐学,result,北理工
From: https://www.cnblogs.com/alien-han/p/16932585.html

相关文章

  • day43MySQL基础(5)
    多表查询的两种方式方式1:连表操作innerjoin内连接 select*fromempinnerjoindeponemp.dep_id=dep.id;只连接两张表中公有的数据部分leftjoin......
  • 北理工mooc火锅火锅和火锅
    火锅火锅和火锅(10分)题目内容:众所周知,沫沫以火锅为生。在E8的聚餐活动中,他经常卖萌卖无辜领着大家吃火锅。。有一天,沫沫听说学校附近的哺呷哺呷在某现充的赞助下有一......
  • S1 - Lesson 43 - 44
    单词 ofcoursecertainlyofcoursenot kettlelittleanelectrickettleIuseanelectrickettletoboilwater. behindTheboyisstandingbehindthet......
  • sublime_text 4143 for Linux 注册
    1. https://hexed.it/2.上传sublime_text,按下面的修改DesciptionOffsetOriginalPatchedInitialLicenseCheck0x003A31F2554157414831C0C3Persisten......
  • 43个PSD to XHTML,CSS教程
    在中国,很多前端开发初学者都会把xHTML+CSS页面制作说成​​DIV+CSS​​​,甚至很多人都还不知道xHTML+​​CSS​​是什么意思,只知道盲目的追求DIV+CSS,但在国外,是没有DIV+CSS......
  • p1143 进制转换
    进制转换题目描述请你编一程序实现两种不同进制之间的数据转换。输入格式共三行,第一行是一个正整数,表示需要转换的数的进制\(n(2≤n≤16)\),第二行是一个n进制数,若\(n>1......
  • 『题解』Codeforces 1743A Password
    Problem现有\(4\)位密码,满足以下条件:给定数位的集合\(S\),密码中没有用到这些数位。密码中恰好包含两个数位,每个数位出现了两次。求符合条件的密码个数。Solution......
  • Atlassian-bitbucket RCE (CVE-2022-43781) 漏洞分析记录
    前言距离上次写文章居然过去两年多了,这两年多忙于各种事务,环境搭建官方仓库维护了各种版本的Bitbicket,我们根据漏洞描述选择一个可以触发漏洞的版本即可。然后根据镜像......
  • LeetCode 435.无重叠区间
    LeetCode435.无重叠区间题目地址:​​https://leetcode-cn.com/problems/non-overlapping-intervals/​​题目描述:给定一个区间的集合,找到需要移除区间的最小数量,使剩余区......
  • 北理工慕课4.7循环的综合应用讨论题2
    打印图形以下图形用什么算法实现程序最简单?你会考虑哪些测试用例来保证程序的正确性和坚固性?请给出你的实现程序。(图中n=5) 这题颇有意思,本人代码如下供参考#inclu......