栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++万年历

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++万年历

每四年有一次闰年 所以可以把一年看作365.25天,满四年就多出一天(2月29日)
计算完成后直接去掉小数部分即可

#include 
using namespace std;

//标记日期 1949 10 1 
//中华人民共和国成立 当天是周六 

int mday(int,int);
int main()
{
	int y,fly1949,flyday,w;
	fly1949 = 1948*(365.25) + 274;
	
	cin >> y;
	for(int m=1;m<=12;++m){
		flyday = (y-1)*(365.25) + 1;
		for(int i=1;i<=m-1;++i){
			flyday += mday(y,i);
		}
	    w = (flyday - fly1949)%7 + 6;
		w = w>7?w-7:w;
	    
	    cout << "---------------" << m << "月---------------" << endl;
		cout << "Mon.  Tues. Wed.  Thur. Fri.  Sat.  Sun." << endl;
		
	    for(int i=1;i<=w-1;++i){
		    cout << "      ";
	    }
    	for(int i=1;i<=mday(y,m);++i){
    		printf("%2d    ",i); 
    		if((i-8+w)%7 == 0){
    			cout << endl;
    		}
    	}
    	cout << endl << endl;
	}
	return 0; 
}

int mday(int y,int m)
{ //根据月份判断天数 
	switch(m){
	    case 1:
	    case 3:
	    case 5:
	    case 7:
	    case 8:
	    case 10:
	    case 12:
	    	return 31;
	    case 4:
	    case 6:
	    case 9:
	    case 11:
	    	return 30;
	    case 2:
	    	if(y%4==0 && y%100!=0 || y%400==0){
	    		return 29;
			}else{
	    		return 28;
			}
	}
	return 0;
}

运行后输入2022 运行结果如下:

---------------1月---------------
Mon.  Tues. Wed.  Thur. Fri.  Sat.  Sun.
             1     2     3     4     5
 6     7     8     9    10    11    12
13    14    15    16    17    18    19
20    21    22    23    24    25    26
27    28    29    30    31

........

---------------12月---------------
Mon.  Tues. Wed.  Thur. Fri.  Sat.  Sun.
 1     2     3     4     5     6     7
 8     9    10    11    12    13    14
15    16    17    18    19    20    21
22    23    24    25    26    27    28
29    30    31
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015334.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号