C++万年历
一、运行结果
二、源代码
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <iomanip>
using namespace std; class Calendar {
public : Calendar ( ) { TotalDays = 0 ; MonthDays = 0 ; } ; void get_time ( ) ; int is_leap ( int y) ; int get_days_month ( int m) ; void get_total_day ( ) ; void get_locate ( ) ; void show_date ( ) ; ~ Calendar ( ) { cout<< "Thank you for using it!" << endl; } ;
private : int Year; int Month; int TotalDays; int WeekDays; int MonthDays;
} ; void Calendar:: get_time ( ) { cout<< "Welcome ..." << endl; cout<< "请输入要查询的年份和月份:" ; cin>> Year>> Month; cout<< endl;
} int Calendar:: is_leap ( int y) { if ( ( y% 4 == 0 && y% 100 != 0 ) or ( y% 400 == 0 ) ) { return 1 ; } else { return 0 ; }
} int Calendar:: get_days_month ( int m) { int months[ 14 ] = { 0 , 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ; if ( is_leap ( Year) ) { months[ 2 ] = 29 ; } return months[ m] ;
} void Calendar:: get_total_day ( ) { int i, j; for ( i= 1900 ; i< Year; i++ ) { if ( is_leap ( i) ) { TotalDays+ = 366 ; } else { TotalDays+ = 365 ; } } for ( j= 1 ; j< Month; j++ ) { TotalDays+ = get_days_month ( j) ; }
} void Calendar:: get_locate ( ) { WeekDays= ( TotalDays+ 1 ) % 7 + 1 ;
} void Calendar:: show_date ( ) { int i, k; MonthDays= get_days_month ( Month) ; get_total_day ( ) ; get_locate ( ) ; cout<< " 日 一 二 三 四 五 六" << endl; for ( i= 1 ; i< WeekDays; i++ ) { cout<< " " ; } k= WeekDays; for ( i= 1 ; i<= MonthDays; i++ ) { if ( k% 7 == 0 ) { cout<< setw ( 3 ) << right<< setfill ( ' ' ) << i<< endl; k++ ; continue ; } cout<< setw ( 3 ) << right<< setfill ( ' ' ) << i; k++ ; } cout<< endl<< endl;
} int main ( void ) { int Year, Month; Calendar cal; cal. get_time ( ) ; cal. show_date ( ) ; return 0 ;
}