天天看点

万年历制作

#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

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,

  printmonthbody(year, month);

void printmonthtitle(int year, int month)

{

  printmonthname(month);

  cout << " " << year <<

endl;

  cout << "----------------------------" <<

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

    case 10: cout << setw(16) << "october";

    case 11: cout << setw(16) << "november";

    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;

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

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;