zoukankan      html  css  js  c++  java
  • 万年历制作

    #include<iostream>
    #include<iomanip>

    using namespace std;

    void printMonth(int year, int month);
    void printMonthTitle(int year, int month);
    void printMonthName(int month);
    void printMonthBody(int year, int month);
    int getStartDay(int year, int month);
    int getTotalNumberOfDays(int year, int month);
    int getNumberOfDaysInMonth(int year, int month);
    bool isLeapYear(int year);

    int main() {
      cout << "Enter full year (e.g., 2001) : ";
      int year;
      cin >> year;

      cout << "Enter month in number between 1 and 12 : ";
      int month;
      cin >> month;

      printMonth(year, month);

      return 0;
    }

    void printMonth(int year, int month) {
      printMonthTitle(year, month);
      printMonthBody(year, month);
    }

    void printMonthTitle(int year, int month) {
      printMonthName(month);
      cout << " " << year << endl;
      cout << "----------------------------" << endl;
      cout << " Sun Mon Tus Wed Thu Fri Sat" << endl;
    }

    void printMonthName(int month) {
      switch(month) {
        case 1: cout << setw(16) << "Junuary"; break;
        case 2: cout << setw(16) << "February"; break;
        case 3: cout << setw(16) << "March"; break;
        case 4: cout << setw(16) << "April"; break;
        case 5: cout << setw(16) << "May"; break;
        case 6: cout << setw(16) << "June"; break;
        case 7: cout << setw(16) << "July"; break;
        case 8: cout << setw(16) << "August"; break;
        case 9: cout << setw(16) << "September"; break;
        case 10: cout << setw(16) << "October"; break;
        case 11: cout << setw(16) << "November"; break;
        case 12: cout << setw(16) << "December";
      }
    }

    void printMonthBody(int year, int month) {
      int startDay = getStartDay(year, month);
      int numberOfDaysInMonth = getNumberOfDaysInMonth(year, month);
      for (int i = 0; i < startDay; i++) {
        cout << " ";
      }
      for (int i = 1; i <= numberOfDaysInMonth; i++) {
        cout << setw(4) << i;
        if ((i+startDay) % 7 == 0) cout << endl;
      }
    }

    int getStartDay(int year, int month) {
      int startDay1800 = 3;
      int totalNumberOfDays = getTotalNumberOfDays(year, month);
      return (totalNumberOfDays + startDay1800) % 7;
    }

    int getTotalNumberOfDays(int year, int month) {
      int total = 0;
      for (int i = 1800; i < year; i++) {
        if (isLeapYear(i)) total += 366;
        else total += 365;
      }
      for (int i = 1; i < month; i++) {
        total += getNumberOfDaysInMonth(year, i);
      }
      return total;
    }

    int getNumberOfDaysInMonth(int year, int month) {
      if (month == 4 || month == 6 || month == 9 || month == 11) return 30;
      if (month == 2) return isLeapYear(year) ? 29 : 28;
      else return 31;
    }

    bool isLeapYear(int year) {
      return year%4 == 0 && year%100 != 0 || year %400 == 0;
    }

  • 相关阅读:
    Django创建模型。
    Kubernetes APIService资源
    应用系统管理风险
    [Golang] go list命令查看依赖的版本
    [Golang] 升级gin框架和jwtgo
    [Git] 解决git错误 OpenSSL SSL_read: Connection was reset, errno 10054
    [Github] 配置ssh免密码登录解决 You've successfully authenticated, but GitHub does not provide shell access.
    go循环遍历小坑
    Go 字符串拼接6种,最快的方式 strings.builder
    uniapp安卓真机调试提示检测不到手机【解决办法】
  • 原文地址:https://www.cnblogs.com/sysu-zhengwsh/p/3698236.html
Copyright © 2011-2022 走看看