第3关:这天星期几?

任务描述

本关任务:编写函数 whatDay,计算某年某月的1号是星期几并返回。

编程要求

在右侧编辑器中的Begin-End之间补充代码,计算输入数据年月份的1号是星期几并返回(周一到周日分别返回整数1到7)。

其中该函数的参数为输入的两个整数数据:年和月。

提示:由于判断是否闰年有多个地方需要用到,故已把该功能单独实现为一个函数。

测试说明

平台会对你编写的代码进行测试,比对你输出的数值与实际正确数值,只有所有数据全部计算正确才能通过测试:

测试输入:2016 1
预期输出:2016年1月1日是星期5

测试输入:2017 7
预期输出:2017年7月1日是星期6

#include <iostream>

using namespace std;

// 函数leapYear
int leapYear(int y) {
    if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0)
        return 1;
    return 0;
}

// 函数whatDay:计算某年某月某日是星期几
// 参数:year-年,month-月
// 返回值:1-7分别表示星期一到星期日
int whatDay(int year, int month) {
    // 请在这里补充代码,实现函数whatDay
    /********** Begin *********/
    int day = 1;
    // 计算年份的天数
    for (int i = 1; i < year; ++i) {
        if (leapYear(i) == 1) {
            day += 366;
        } else {
            day += 365;
        }
    }
    // 计算月份的天数
    for (int i = 1; i < month; ++i) {
        switch (i) {
            case 1:
                day += 31;
                break;
            case 2:
                day += 28;
                break;
            case 3:
                day += 31;
                break;
            case 4:
                day += 30;
                break;
            case 5:
                day += 31;
                break;
            case 6:
                day += 30;
                break;
            case 7:
                day += 31;
                break;
            case 8:
                day += 31;
                break;
            case 9:
                day += 30;
                break;
            case 10:
                day += 31;
                break;
            case 11:
                day += 30;
                break;
            case 12:
                day += 31;
                break;
            default:
                break;
        }
    }
    // 如果这一年是闰年,二月要 +1, 否则不变
    if (leapYear(year) == 1 && month > 2) {
        day += 1;
    }
    return day % 7 != 0 ? day % 7 : 7;
    /********** End **********/
}

int main() {
    int y, m, xq;     // 年、月、星期几
    cin >> y >> m;     // 输入年月
    xq = whatDay(y, m);     // 计算星期几
    cout << y << "年" << m << "月1日是星期";     // 输出星期
    if (xq == 7)
        cout << "日" << endl;
    else
        cout << xq << endl;
    return 0;
}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海不再神清气爽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值