zoukankan      html  css  js  c++  java
  • 万年历查询 c++ 黑窗

    c++刘军老师课上布置的作业

    感觉非常有意思

    自己一行一行敲出来Debug 还是很有成就感得

    话不多说上图上代码




    #include <iostream>
    #include <iomanip>
    using namespace std;
    
    int un_leap_year[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年月份日 
    int leap_year[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};	//闰年月份日 
    string chweek[7] = {"一","二","三","四","五","六","日"}; 		//周一到周日 
    
    bool is_leap_year(int year)						//闰年判定 
    {
    	return (year % 4 == 0 && year % 100 == 0 || year % 400 == 0);
    }
    
    int cal_week(int year, int month, int day,int mode) 			//计算星期几 
    {																
    	if(month == 1 || month == 2)							 
    	{
    		month += 12;
    		year --;
    	}											//基姆拉尔森计算公式 
    	int ans = (day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7;
    	
    	if(mode == 1)									        //模式1输出星期几 
    		cout<< chweek[ans] << endl << endl;						//非模式1只返回计算值	
    	return ans;
    } 
    
    void put_month(int year, int month)								//输出月份 
    {
    	int flag = 0,day = 1;
    	while(flag < 7)										//输出周一到周日 
    	{
    		cout<<setw(6)<<chweek[flag];
    		flag ++;
    	}
    	cout<<endl<<"		"<<year<<'.'<<month<<".1 星期";
    	flag = cal_week(year, month, 1, 1);
    	
    	cout<<"--------------------------------------------"<<endl;
    	
    	while(flag --)
    		cout<<"      ";									//补齐每月不在的星期位置 
    		
    	flag = is_leap_year(year)?leap_year[month]:un_leap_year[month];
    	
    	while(day <= flag)
    	{
    		cout<<setw(6)<<day;								//输出日期 
    		if(cal_week(year, month, day, 0) == 6)					        //周日换行 
    			cout<<endl;
    		day ++;
    	}	
    	
    	cout<< endl <<"--------------------------------------------"<< endl << endl;
    }
    
    void put_year(int year)
    {
    	int month = 1;
    	while(month < 13)
    	{
    		put_month(year, month);							        //重复调用月输出函数 
    		month ++;
    	}
    		
    }
    
    void put_welcome(int flag)
    {
    	if(flag == 0)										//仅首次输出欢迎界面 
    	{
    		cout<<endl<<endl; 								//以后只输出查询界面 
    		cout<<"	------------------------------------"<<endl;
    		cout<<"	*                                  *"<<endl;
    		cout<<"	*      欢迎进入万年历查询系统      *"<<endl;
    		cout<<"	*             By 张峻溥            *"<<endl;
    		cout<<"	*                                  *"<<endl;
    		cout<<"	------------------------------------"<<endl<<endl;
    	}
    	cout<<"请选择您的查询内容;"<<endl<<endl;
    	cout<<"	1.显示一年的日历;"<<endl;
    	cout<<"	2.显示一月的日历;"<<endl;
    	cout<<"	3.显示某一天是星期几;"<<endl;
    	cout<<"	0.退出;"<<endl<<endl;
    	cout<<"请输入按键(0-3);" <<endl; 
    	
    }
    
    int main()
    {
    	int year, month, day, ans,flag = 0;
    	while(1)
    	{
    		put_welcome(flag);								//仅首次输出欢迎界面 	
    			flag = 1;
    		int mode;
    		cin>>mode;
    		if(mode == 1)
    		{
    			cout<<"请输入一个年份:"<<endl;
    			cin>>year;
    			put_year(year);
    		}
    		else if(mode == 2)
    		{
    			cout<<"请依次输入年份,月份:"<<endl;
    			cin>>year>>month;
    			put_month(year,month);
    		} 
    		else if(mode == 3)
    		{
    			cout<<"请依次输入年份,月份,日份:"<<endl; 
    			cin>>year>>month>>day;
    			cout<<endl<<endl<<"	"<<year<<"年"<<month<<"月"<<day<<"日是:星期";
    			cal_week(year, month, day, 1);
    		}
    		else										//非模式1,2,3退出 
    		{
    			break;
    		}
    	}
    	return 0;
    }

    #include <iostream>
    #include <iomanip>
    using namespace std;
    int un_leap_year[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; //平年月份日 
    int leap_year[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};	//闰年月份日 
    string chweek[7] = {"一","二","三","四","五","六","日"}; 	//周一到周日 
    bool is_leap_year(int year)					//闰年判定 
    {
    	return (year % 4 == 0 && year % 100 == 0 || year % 400 == 0);
    }
    int cal_week(int year, int month, int day,int mode) 		//计算星期几 
    {																
    	if(month == 1 || month == 2)							 
    	{
    		month += 12;
    		year --;
    	}							//基姆拉尔森计算公式 
    	int ans = (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
    	if(mode == 1)						//模式1输出星期几 
    		cout<< chweek[ans] << endl << endl;		//非模式1只返回计算值	
    	return ans;
    } 
    
    void put_month(int year, int month)				//输出月份 
    {
    	int flag = 0,day = 1;
    	while(flag < 7)						//输出周一到周日 
    	{
    		cout<<setw(6)<<chweek[flag];
    		flag ++;
    	}
    	cout<<endl<<"		"<<year<<'.'<<month<<".1 星期";
    	flag = cal_week(year, month, 1, 1);
    	
    	cout<<"--------------------------------------------"<<endl;
    	
    	while(flag --)
    		cout<<"      ";					//补齐每月不在的星期位置 
    		
    	flag = is_leap_year(year)?leap_year[month]:un_leap_year[month];
    	
    	while(day <= flag)
    	{
    		cout<<setw(6)<<day;				//输出日期 
    		if(cal_week(year, month, day, 0) == 6)		//周日换行 
    			cout<<endl;
    		day ++;
    	}	
    	cout<< endl <<"--------------------------------------------"<< endl << endl;
    }
    void put_year(int year)
    {
    	int month = 1;
    	while(month < 13)
    	{
    		put_month(year, month);				//重复调用月输出函数 
    		month ++;
    	}
    }
    void put_welcome(int flag)
    {
    	if(flag == 0)						//仅首次输出欢迎界面 
    	{
    		cout<<endl<<endl; 				//以后只输出查询界面 
    		cout<<"	------------------------------------"<<endl;
    		cout<<"	*                                  *"<<endl;
    		cout<<"	*      欢迎进入万年历查询系统      *"<<endl;
    		cout<<"	*             By 张峻溥            *"<<endl;
    		cout<<"	*                                  *"<<endl;
    		cout<<"	------------------------------------"<<endl<<endl;
    	}
    	cout<<"请选择您的查询内容;"<<endl<<endl;
    	cout<<"	1.显示一年的日历;"<<endl;
    	cout<<"	2.显示一月的日历;"<<endl;
    	cout<<"	3.显示某一天是星期几;"<<endl;
    	cout<<"	0.退出;"<<endl<<endl;
    	cout<<"请输入按键(0-3);" <<endl; 
    }
    int main()
    {
    	int year, month, day, ans,flag = 0;
    	while(1)
    	{
    		put_welcome(flag);				//仅首次输出欢迎界面 	
    			flag = 1;
    		int mode;
    		cin>>mode;
    		if(mode == 1)
    		{
    			cout<<"请输入一个年份:"<<endl;
    			cin>>year;
    			put_year(year);
    		}
    		else if(mode == 2)
    		{
    			cout<<"请依次输入年份,月份:"<<endl;
    			cin>>year>>month;
    			put_month(year,month);
    		} 
    		else if(mode == 3)
    		{
    			cout<<"请依次输入年份,月份,日份:"<<endl; 
    			cin>>year>>month>>day;
    			cout<<endl<<endl<<"	"
    			cout<<year<<"年"<<month<<"月"<<day<<"日是:星期";
    			cal_week(year, month, day, 1);
    		}
    		else						//非模式1,2,3退出 
    		{
    			break;
    		}
    	}
    	return 0;
    }
    

    以上!


  • 相关阅读:
    Java 基本知识
    开源框架 Java
    Java 常用工具
    centos7设置静态IP
    VMnet1、VMnet8到底是什么?
    centos7修改主机名的方法
    防火墙阻止了虚拟机与主机之间互相ping通解决方案
    虚拟机centos与主机互相Ping通
    centos个性化命令行提示符
    更多的常用命令
  • 原文地址:https://www.cnblogs.com/zeolim/p/12270685.html
Copyright © 2011-2022 走看看