用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c代码库

萬年歷,

2017-12-06 作者: Include丶狼魂举报

[c]代码库

#include <iostream>
#include<ctype.h> //字符处理函数: 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换。 
#include<math.h> //数学函数: 本分类给出了各种数学计算函数。 
#include<signal.h>//信号处理: 该分类函数用于处理那些在程序执行过程中发生例外的情况。
#include<stdarg.h> //可变参数处理: 本类函数用于实现诸如printf,scanf等参数数量可变底函数。
#include<stdio.h> //输入输出函数:该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现。 
#include<string.h> //字符串处理: 本分类的函数用于对字符串进行合并、比较等操作。 
#include<time.h> //日期和时间函数: 本类别给出时间和日期处理函数。 
#include<stdlib.h> //实用工具函数: 本分类给出了一些函数无法按以上分类,但又是编程所必须要的。
#include<windows.h>//延迟函数。 
#define P printf//标准输出 
#define S scanf//标准输入 
#define C char//字符型 
#define F float//单精度型 
#define D double//双精度型 
#define L long//长整型 

/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char** argv) 
{
//各类自定义的函数 。 
int qiuxingqi(int nianfen,int yuefen,int rizi);//求星期几函数。 
int qiurunnian(int nianfen);//求是否为闰年函数。
int yanchi(int yanchi);//延遲函數。 
void qiuyuerili(int nianfen,int yuefen);//打印某个月份的日历。 
void qiunianrili(int nianfen);//打印某年的日历。 
//各类自定义的变量。 
int xq,sj,nian,yue,ri,run;
int zcxxh=1;//主程序循環。
int zxh=0;//子程序循環。 
int cxgn;//功能選擇變量。
int zpd;//子程序判斷。 
//系統日期顯示
struct tm *ptr;
time_t it;
it=time(NULL);
ptr=localtime(&it);
//程序欢迎界面
system("color 5");
P("\n");
P("\n");
P("\n");
P("\n");
P("                      *                   *    *                   \n");
P("                ***** *                    * **  ****           ** \n");
P("                    * *****                  *   *  *           ** \n");
P("                *   **    *                  *   *  *           ** \n");
P("                 * **    *                ** *   *  *           ** \n");
P("                 * *   *                   * *   *  *           ** \n");
P("                  *    *                   * * * *  *              \n");
P("                  *    *                   * **  *  *              \n");
P("                 * *  * *                  * *   * **           ** \n");
P("                 * *  * *                  *     *              ** \n");
P("                *    *   *                 *     *                 \n");
P("                    *     *               * *********              \n");
yanchi(21111);
system("cls");
system("color 4");
P("\n");
P("\n");
P("\n");
P("\n");
P("                                    *                        \n"); 
P("                  ***********       *              **********\n");
P("                     *              *********      *   *     \n");
P("                     *             *    *          *   *     \n");
P("                     *            *     *          * ******* \n");
P("                     *******        ********       *   *   * \n");
P("                     *     *        *   *          *   *   * \n");
P("                     *     *        *   *          *   *   * \n");
P("                     *     *      ***********      *   *   * \n");
P("                    *      *            *          *  *    * \n");
P("                   *       *            *          * *     * \n");
P("                  *     ***             *         * *   ***  \n");
yanchi(31111);
system("cls");
//主程序界面。
while(zcxxh)
{
	system("color a2");
	P("\n");
	P("\n");
	P("\n");
	P("\n");
	P("\n");
	P("         --------------------------------------------------------------\n");
	P("         |                                                            |\n");
	P("         |                 現在是:%4d年%02d月%02d日                     |\n",ptr->tm_year+1900,ptr->tm_mon+1,ptr->tm_mday,ptr->tm_hour,ptr->tm_min,ptr->tm_sec); 
	P("         |                                                            |\n");
	P("         |              1、輸入年份,程序判斷是否為閏年。             |\n");
	P("         |                                                            |\n");
	P("         |              2、輸入年月日,程序判斷這天為星期幾。         |\n");
	P("         |                                                            |\n");
	P("         |              3、輸入月份,打印出該月的日歷。               |\n"); 
	P("         |                                                            |\n"); 
	P("         |              4、輸入年份,打印出該年的日歷。               |\n");
	P("         |                                                            |\n");
	P("         |                                                            |\n");
	P("         --------------------------------------------------------------\n");
	P("\n");
	P("\n");
	P("請輸入您要選擇的功能!");
	S("%d",&cxgn);
	zxh=1;
	if(cxgn==1)//功能1、判断闰年 
 	{
 		while(zxh)
 		{
 			system("cls");
 			P("請輸入您想要判斷的年份:");
 			S("%d",&nian);
 			if(nian<=10000)
 			{
 				run=qiurunnian(nian);
				if(run==1)
					P("您輸入的該年份為:閏年\n");
				else if(run==0)
					P("您輸入的該年份為:平年\n");
			}
			else 
			{ 
				system("cls");
				P("您輸入的格式有誤,請重新輸入......");
				yanchi(21111);
				system("cls");	
				zxh=1;
				continue; 
			} 
			yanchi(21111);
			P("\n");
			P("\n");
			P("您需要的是繼續判斷還是返回主窗口?\n");
			P("輸入0為主窗口,1為繼續判斷!\n");
			S("%d",&zpd);
			if(zpd==1)
				zxh=1;
			else
			{	
				system("cls");
				break; 
			}
   		}
 	}
 	else if(cxgn==2)//功能2、判断星期 
 	{
 		while(zxh)
 		{
 			system("cls");
 			P("請輸入您想要判斷日期,格式為:年-月-日\n");
 			S("%d-%d-%d",&nian,&yue,&ri);
 			if(yue>12||ri>31)
 			{ 
 				P("您輸入的日期有誤!請您重新輸入\n");
				system("cls");
				zxh=1;
				continue;  
			}
			else if(yue==2&&ri>29)
			{	
				system("cls");
				P("您輸入的日期有誤!請您重新輸入\n");
				yanchi(21111);
				system("cls");
				zxh=1; 
				continue;
			}
			else
			{
				xq=qiuxingqi(nian,yue,ri);
				P("您查詢的這一天是:"); 
				switch(xq)
				{
					case 0:P("星期日!\n");break;
					case 1:P("星期一!\n");break;
					case 2:P("星期二!\n");break;
					case 3:P("星期三!\n");break;
					case 4:P("星期四!\n");break;
					case 5:P("星期五!\n");break;
					case 6:P("星期六!\n");break;
				}
			}
			yanchi(21111);
			P("\n");
			P("\n");
			P("您需要的是繼續查询還是返回主窗口?\n");
			P("輸入0為主窗口,1為繼續查询!\n");
			S("%d",&zpd);
			if(zpd==1)
				zxh=1;
			else
			{	
				system("cls");
				break; 
			}
		}	
	}
	else if(cxgn==3)//功能3、打印某月日历 
 	{
 		while(zxh)
 		{
 			system("cls");
 			P("請輸入您想要打印的月份,格式為:年-月\n");
 			S("%d-%d",&nian,&yue);
 			if((nian<10000)||(yue<13||yue>0))
 			{
 				P("     %d年%d月\n");
				qiuyuerili(nian,yue);//打印某个月份的日历
			}
 			else
 			{
 				system("cls");
				P("您輸入的日期有誤!請您重新輸入\n");
				yanchi(21111);
				system("cls");
				zxh=1; 
				continue;
			 }
			yanchi(21111);
			P("\n"); 
			P("\n"); 	
			P("您需要的是繼續打印還是返回主窗口?\n");
			P("輸入0為主窗口,1為繼續打印!\n");
			S("%d",&zpd);
			if(zpd==1)
				zxh=1;
			else
			{	
				system("cls");
				break; 
			}
 		}
 	}
 		else if(cxgn==4)//功能4、打印某年日历 
 		{
 			while(zxh)
 			{
 				system("cls");
 				P("請輸入您想要打印的年份,格式為:年\n");
 				S("%d",&nian);
 				if(nian<10000)
 					qiunianrili(nian);
 				else
 				{
 					system("cls");
					P("您輸入的日期有誤!請您重新輸入\n");
					yanchi(21111);
					system("cls");
					zxh=1; 
					continue;
				}
				yanchi(21111);
				P("\n"); 
				P("\n"); 	
				P("您需要的是繼續打印還是返回主窗口?\n");
				P("輸入0為主窗口,1為繼續打印!\n");
				S("%d",&zpd);
				if(zpd==1)
					zxh=1;
				else
				{	
					system("cls");
					break; 
				} 
 			}
		} 
}
return 0;
}
//求星期几函数 
int qiuxingqi(int nianfen,int yuefen,int rizi)//求某一天是星期几函数。 
{
	if(yuefen==1)//蔡勒公式指出:如果是1,2月 要按照上一年的13,14月来计算。 
	{nianfen-=1;
	yuefen=13;
	}
	if(yuefen==2)
	{nianfen-=1;
	yuefen=14;
	}
int shiji=nianfen/100;
nianfen=nianfen-shiji*100;//年数的后两位数。 
int xingqi;
xingqi=(nianfen+nianfen/4+shiji/4-2*shiji+26*(yuefen+1)/10+rizi-1)%7;//蔡勒公式。
if(xingqi<0)//负数的时候要往前加星期而不是直接得出的星期. 
	xingqi+=7; 
return xingqi;//返回值为星期几。 
}
//求闰年函数 
int qiurunnian(int nianfen)//求某一年是否为闰年。
{
int shifourunnian;//闰年该值为1否为0. 
if((nianfen%4==0&&nianfen%100!=0)||(nianfen%400==0))//计算是否为闰年。 
	shifourunnian=1;
else
	shifourunnian=0;
return shifourunnian;
} 
//延迟函数
int yanchi(int yanchi)//延遲函數,延遲時間與自己cpu有關。 
{
	int yccs1,yccs2;
	for(yccs1=0;yccs1<=yanchi;yccs1++)
		for(yccs2=0;yccs2<=yanchi;yccs2++);
 } 
 //打印某一个月份的日历 
 void qiuyuerili(int nianfen,int yuefen)//打印某个月份的日历 
 {
 	int qiurunnian(int nianfen);
 	int qiuxingqi(int nianfen,int yuefen,int rizi);
 	int runnian,xingqiji,tianshu,rn2yts;
 	int kgs=0,jcxh;
 	runnian=qiurunnian(nianfen);//判断该年的2月是多少天。 
 	if(runnian==1)
		rn2yts=29;
	else if(runnian==0)
		rn2yts=28;
 	xingqiji=qiuxingqi(nianfen,yuefen,1);
 	switch(yuefen)//判断该月总共多少天。 
 	{
 		case 1:tianshu=31;break;
		case 2:tianshu=rn2yts;break;
		case 3:tianshu=31;break;
		case 4:tianshu=30;break;
		case 5:tianshu=31;break;
		case 6:tianshu=30;break;
		case 7:tianshu=31;break;
		case 8:tianshu=31;break;
		case 9:tianshu=30;break;
		case 10:tianshu=31;break;
		case 11:tianshu=30;break;
		case 12:tianshu=31;break;	
	 }
 	kgs=xingqiji-1;
 	P("该月有%d天\n",tianshu);
 	P("日  一  二  三  四  五  六\n");
 	for(jcxh=0;jcxh<=kgs;jcxh++)//输出每月的第一天前面的空格 
 		P("    ");
 	for(jcxh=1;jcxh<=tianshu;jcxh++)//输出该月的每一天。 
 		{
			P("%-4d",jcxh);
 			if((kgs+jcxh+1)%7==0)
 				P("\n"); 
		}
	P("\n"); 
 }
 //打印某一年的日历 
 void qiunianrili(int nianfen)//打印某年的日历。
 {
 	void qiuyuerili(int nianfen,int yuefen);//打印每月的日历计算。
 	int yuefen;
 	for(yuefen=1;yuefen<=12;yuefen++)//循环每月 
 	{
 		P("      %d年%d月\n",nianfen,yuefen);
 		qiuyuerili(nianfen,yuefen);
 		P("\n");
 		P("\n");
	 }	  
  } 


网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...