题解 | Day of Week

Day of Week

https://www.nowcoder.com/practice/a3417270d1c0421587a60b93cdacbca0

#include <stdio.h>
#include <string>
#include <iostream>
using namespace std;
string months[13] = {" ", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
string weeks[8] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
//一年的总天数
int Days(int year) {
    //int dayOfmonth[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    bool isLeap = year % 400 == 0 || year % 100 != 0 && year % 4 == 0;
    if (isLeap) {
        return 366;
    } else {
        return 365;
    }
}
//今年以前的所有年的总天数
int BYearDays(int year) {
    int i, days = 0;
    for (i = 1; i < year; ++i) {
        days += Days(i);
    }
    return days;

}
//今年的总天数
int ThisYearDays(int year, int month, int day) {
    int j, sum = 0;
    int dayOfmonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    bool isLeap = year % 400 == 0 || year % 100 != 0 && year % 4 == 0;
    if (isLeap) {
        dayOfmonth[2] = 29;
    }
    for (j = 1; j < month; ++j) {
        sum += dayOfmonth[j];
    }
    sum += day;
    return sum;
}
int main() {
    int day, year, month, i, j;
    string smonth, week;
    int num1, num2; //num1:存放今年以前的所有年的总天数,num2存放今年到某天的天数;sum=num1+num2;

    //scanf("%d %s %d",&day,&smonth,&year)!=EOF 
     //ps:scanf与c++字符串不兼容!!!
    while (cin >> day >> smonth >> year) {
        int sum = 0;
        //将英文的月份与数字对应起来
        for (i = 0; i < 13; ++i) {
            if (months[i] == smonth) {
                month = i;
                break;
            }
        }

        num1 = BYearDays(year);
        num2 = ThisYearDays(year, month, day);
        sum = (num1 + num2) % 7; //数字,代表星期几 ,ps:若为0,是星期日
        week = weeks[sum];
        cout << week <<
             endl; // 注意输出!!printf不能输出字符串数组。怪不得编译错误
        //cout 在#include <iostream>里
    }
    //cout<<"hi"<<endl;
    return 0;
}

王道机试指南 文章被收录于专栏

这个专栏是参考王道机试指南中相关的练习题哦

全部评论

相关推荐

讯飞老萌新:站住!有人25还没有找到工作的吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务