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;
    }

  • 相关阅读:
    苹果推送通知服务(APNs)编程
    Mac svn命令 linux同样适用
    IOS多线程(NSThread,NSOperation,Grand Central Dispatch)
    iOS7新特性之二维码生成于读取
    Socket即时通讯小实例
    iOS内置加速计(UIAccelerometer/CoreMotion)
    iOS设计模式----委托模式
    NSXMLParser详解
    Core Foundation 框架
    UIView和CALayer的区别
  • 原文地址:https://www.cnblogs.com/sysu-zhengwsh/p/3698236.html
Copyright © 2011-2022 走看看