打印日历每行三个月份源代码
C语言打印某一年中某月的日历

C语⾔打印某⼀年中某⽉的⽇历在做学校作业发现的⼀道不错的练⼿题⽬,记录下来⽅便复习⼤致思路:①判断输⼊的年份是否闰年;②计算输⼊⽉份的第⼀天是该年的第⼏天;③计算输⼊⽉份的第⼀天是星期⼏;④输出。
结合代码使⽤:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){int arr1[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };int i = 0;int year = 0;int month = 0;int days = 0;int week = 0;//判断第⼀天周⼏scanf("%d%d", &year, &month);if((year % 4 == 0 && year % 100 != 0)||(year % 400 == 0))//判断是否是闰年{arr1[2] = 29;//闰年2⽉29天}for (i = 0; i < month; i++){days += arr1[i];//计算该⽉第⼀天是该年多少天}days++;//该⽉第⼀天,还要把这⼀天算上//套⽤计算星期⼏的公式week = (year - 1 + (year - 1) / 4 - (year - 1) / 100 + (year - 1) / 400 + days) % 7;printf(" ⽇⼀⼆三四五六\n");//表头int arr2[50] = {0};for (i = 0; i < week; i++){printf(" ");//整型数组不能存放空格,因此直接把空格打印出来}arr2[week] = 1;for (i = week + 1; i <= arr1[month]+week-1; i++)//把输⼊⽉份的每⼀天放到数组中{arr2[i] = arr2[i-1]+1;}int count = 0;//记录已打印⼏个数据,打印7个数据就换⾏i = week;int flag = 1;//⽤于记录是否为第⼀⾏,第⼀⾏不能⽤count计数⽅式换⾏while (i<=arr1[month]+week-1)//把该⽉所有天数都打印出来{if (flag <= 7-week){printf("%3d", arr2[i]);if (flag == 7 - week)//打印够数据后换⾏printf("\n");flag++;}else{printf("%3d", arr2[i]);count++;if (count == 7){count = 0;printf("\n");}}i++;}return 0;}实现结果:以上所述是⼩编给⼤家介绍的C语⾔打印某⼀年中某⽉的⽇历,希望对⼤家有所帮助。
C语言万年历代码

题目:年历显示。
功能要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。
假定输入的年份在1940-2040年之间。
(2)输入年月,输出该月的日历。
(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。
如下图:以下部分为代码:#include<stdio.h>#include<math.h>void part1(int x); //函数1~6为打印日历的函数void part2(int x);void part3(int x);void part4(int x);void part5(int x);void part6(int x);int weak(int x,int y); //计算1号对应的星期int weak2(int x,int y,int z); //计算星期,为函数day提供数据int year(int x); //打印日历的函数int mouth(int x); //打印月历的函数int day(int x); //查询天数的函数int distance(int x,int y,int z); //提供距离天数查询int main(){int a;char z;printf("****************************************************************\n");printf(" * *\n");printf(" * *\n");printf(" * *\n");printf(" * 欢迎使用万年历!*\n");printf(" * *\n");printf(" * *\n");printf(" * 开发:杨润*\n");printf("****************************************************************\n");x: //位置标注printf("\n");printf("请输入一个日期(Ex:20150302或201503或2015):");scanf("%d",&a);printf("\n");if((1940<=a)&&(a<=2040)){year(a);}else if((194001<=a)&&(a<=204012)){mouth(a);}else if((19400101<=a)&&(a<=20401231)){day(a);}else{printf("输入错误,请重新输入!");goto x;}printf("\n");printf("\n");printf("继续查询(y),退出(n):");scanf("%s",&z);if(z=='y'){goto x;}else{;}return 0;}int year(int x){printf("-------------------------------%d年的年历----------------------------\n",x);printf("\n");part1(x); //调用第一部分函数part2(x);part3(x);part4(x);part5(x);part6(x);printf("-----------------------------------------------------------------------\n");return 0;}int mouth(int x){int i,n,y,y2,w,week,yue2,bz1; //n表示年份,y表示月份,w,y2均为临时变量,yue2表示2月份天数n=(int)(x/100);y=(int)(x%100);printf("您现在查询的是%d年%d月\n",n,y);printf(" \n");if(y==1) //1月的情况{printf("1月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");if(n<2000) //计算小于两千的1.1星期{y2=(n-1)%100; //y2 w=(int)(y2+(y2/4)+(19/4)-38+(26*1.4));week=w%7;}if(n>=2000) //计算大于两千的1.1星期{ y2=(n-1)%100;w=(int)(y2+(y2/4)+(20/4)-40+(26*1.4));week=w%7;}for(i=0;i<week;i++){printf(" ");}bz1=1;for(i=0;i<(7-week);i++) //第一行的一月份{if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第二行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第三行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第四行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第五行的1月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf("\n");printf(" "); //第六行的1月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf("\n");}if(y==2) //2月的情况{if(n%4==0){if(n%100!=0)yue2=29;else if(n%100==0&&n%400==0)yue2=29;elseyue2=28;}else{yue2=28;}printf("2月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");if(n<2000) //计算小于两千的2.1星期{y2=(n-1)%100; //y2w=(int)(y2+(y2/4)+(19/4)-38+(26*1.5));week=w%7;}if(n>=2000) //计算大于两千的2.1星期{ y2=(n-1)%100;w=(int)(y2+(y2/4)+(20/4)-40+(26*1.5));week=w%7;}for(i=0;i<week;i++){printf(" ");}bz1=1;for(i=0;i<(7-week);i++) //第一行的2月份{if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第二行的2月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第三行的2月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第四行的2月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第五行的2月份for(i=0;i<7;i++){if(bz1<=yue2){printf(" %d ",bz1);}if(bz1>yue2){printf(" ");}bz1=bz1+1;}printf("\n");printf(" "); //第六行的2月份for(i=0;i<7;i++){if(bz1<=yue2){printf(" %d ",bz1);}if(bz1=yue2){printf(" ");}bz1=bz1+1;}printf("\n");}//2月情况判断完毕if((y==3)||(y==5)||(y==7)||(y==8)||(y==10)||(y==12)) //31天的情况(3、5、7、8、10、12月){printf("%d月Sun Mon Tue Wed Thu Fri Sat\n",y);printf(" ");week=weak(n,y);for(i=0;i<week;i++) //第一行{printf(" ");}bz1=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第二行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第三行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第四行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第五行for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf("\n");printf(" "); //第六行for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf("\n");}if((y==4)||(y==6)||(y==9)||(y==11)) //30天的情况(4、6、9、11月){printf("%d月Sun Mon Tue Wed Thu Fri Sat\n",y);printf(" ");week=weak(n,y);for(i=0;i<week;i++) //第一行{printf(" ");}bz1=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第二行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第三行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第四行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf("\n");printf(" "); //第五行for(i=0;i<7;i++){if(bz1<=30){printf(" %d ",bz1);}if(bz1>30){printf(" ");}bz1=bz1+1;}printf("\n");printf(" "); //第六行for(i=0;i<7;i++){if(bz1<=30){printf(" %d ",bz1);}if(bz1>30){printf(" ");}bz1=bz1+1;}printf("\n");}return 0;}int day(int x){int n,y,y1,t,week; //n为年,y为yue,y1位计算y的临时变量,t为天,week为周,p为距离今天天数n=x/10000;y1=x%10000;y=y1/100;t=x%100;printf("\n");printf("您查询的是:%d年%d月%d日",n,y,t);week=weak2(n,y,t);switch(week) //根据返回数值判断星期{case 0:printf("星期日");break;case 1:printf("星期一");break;case 2:printf("星期二");break;case 3:printf("星期三");break;case 4:printf("星期四");break;case 5:printf("星期五");break;case 6:printf("星期六");break;}if(y==1&&t==1) printf("这天是元旦"); //查询节日if(y==2&&t==2) printf("这天是世界湿地日");if(y==2&&t==14) printf("这天是情人节");if(y==3&&t==3) printf("这天是全国爱耳日");if(y==3&&t==5) printf("这天是青年志愿者服务日");if(y==3&&t==8) printf("这天是国际妇女节");if(y==3&&t==9) printf("这天是保护母亲河日");if(y==3&&t==12) printf("这天是中国植树节");if(y==3&&t==14) printf("这天是白色情人节\n");if(y==3&&t==14) printf("这天是国际警察日");if(y==3&&t==15) printf("这天是世界消费者权益日");if(y==3&&t==21) printf("这天是世界森林日\n");if(y==3&&t==21) printf("这天是世界睡眠日");if(y==3&&t==22) printf("这天是世界水日");if(y==3&&t==23) printf("这天是世界气象日");if(y==3&&t==24) printf("这天是世界防治结核病日");if(y==4&&t==1) printf("这天是愚人节");if(y==4&&t==5) printf("这天是清明节");if(y==4&&t==7) printf("这天是世界卫生日");if(y==4&&t==22) printf("这天是世界地球日");if(y==4&&t==26) printf("这天是世界知识产权日");if(y==5&&t==1) printf("这天是国际劳动节");if(y==5&&t==3) printf("这天是世界哮喘日");if(y==5&&t==4) printf("这天是中国青年节");if(y==5&&t==8) printf("这天是世界红十字日");if(y==5&&t==12) printf("这天是国际护士节");if(y==5&&t==15) printf("这天是国际家庭日");if(y==5&&t==17) printf("这天是世界电信日");if(y==5&&t==20) printf("这天是全国学生营养日");if(y==5&&t==23) printf("这天是国际牛奶日");if(y==5&&t==31) printf("这天是世界无烟日");if(y==6&&t==1) printf("这天是国际儿童节");if(y==6&&t==5) printf("这天是世界环境日");if(y==6&&t==6) printf("这天是全国爱眼日");if(y==6&&t==17) printf("这天是世界防治荒漠化和干旱日"); if(y==6&&t==23) printf("这天是国际奥林匹克日");if(y==6&&t==25) printf("这天是全国土地日");if(y==6&&t==26) printf("这天是国际禁毒日");if(y==7&&t==1) printf("这天是中国共产党诞生日\n");if(y==7&&t==1) printf("这天是国际建筑日");if(y==7&&t==7) printf("这天是中国人民抗日战争纪念日"); if(y==7&&t==11) printf("这天是世界人口日");if(y==8&&t==1) printf("这天是中国人民解放军建军节");if(y==8&&t==12) printf("这天是国际青年节");if(y==9&&t==8) printf("这天是国际扫盲日");if(y==9&&t==10) printf("这天是中国教师节");if(y==9&&t==16) printf("这天是中国脑健康日\n");if(y==9&&t==16) printf("这天是国际臭氧层保护日");if(y==9&&t==20) printf("这天是全国爱牙日");if(y==9&&t==21) printf("这天是世界停火日");if(y==9&&t==27) printf("这天是世界旅游日");if(y==10&&t==1) printf("这天是中华人民共和国国庆节\n");if(y==10&&t==1) printf("这天是国际音乐日\n");if(y==10&&t==1) printf("这天是国际老年人日");if(y==10&&t==4) printf("这天是世界动物日");if(y==10&&t==5) printf("这天是世界教师日");if(y==10&&t==8) printf("这天是全国高血压日");if(y==10&&t==9) printf("这天是世界邮政日");if(y==10&&t==10) printf("这天是世界精神卫生日");if(y==10&&t==14) printf("这天是世界标准日");if(y==10&&t==15) printf("这天是国际盲人节\n");if(y==10&&t==15) printf("这天是世界农村妇女日");if(y==10&&t==16) printf("这天是世界粮食日");if(y==10&&t==17) printf("这天是国际消除贫困日");if(y==10&&t==24) printf("这天是联合国日\n");if(y==10&&t==24) printf("这天是世界发展新闻日");if(y==10&&t==28) printf("这天是中国男性健康日");if(y==10&&t==29) printf("这天是国际生物多样性日");if(y==10&&t==31) printf("这天是万圣节");if(y==11&&t==8) printf("这天是中国记者节");if(y==11&&t==9) printf("这天是消防宣传日");if(y==11&&t==14) printf("这天是世界糖尿病日");if(y==11&&t==17) printf("这天是国际大学生节");if(y==11&&t==25) printf("这天是国际消除对妇女的暴力日");if(y==12&&t==1) printf("这天是世界爱滋病日");if(y==12&&t==3) printf("这天是世界残疾人日");if(y==12&&t==4) printf("这天是全国法制宣传日");if(y==12&&t==9) printf("这天是世界足球日");if(y==12&&t==25) printf("这天是圣诞节");if(y==12&&t==29) printf("这天是国际生物多样性日");printf("\n");distance(n,y,t);return 0;}//计算今天日期的函数结尾void part1(int x) //第一部分{int i,week,week2,y,w,b1,bz1,bz2;//week,week2用于计算1.1的星期,bz1和bz2为日期的递增b1=7;printf("1月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("7月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");if(x<2000) //计算小于两千的1.1星期{ y=(x-1)%100;w=(int)(y+(y/4)+(19/4)-38+(26*1.4));week=w%7;}if(x>=2000) //计算大于两千的1.1星期{ y=(x-1)%100;w=(int)(y+(y/4)+(20/4)-40+(26*1.4));week=w%7;}week2=weak(x,b1); //调用计算星期的函数(7.1) for(i=0;i<week;i++){printf(" ");}bz1=1,bz2=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印7月的for(i=0;i<=week2;i++){printf(" ");}for(i=0;i<(7-week2);i++){if(bz2<10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第一行打印完毕printf(" "); //第二行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印7月的第二行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第二行打印结束printf(" "); //第三行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印7月的第三行for(i=0;i<7;i++){ if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第三行打印结束printf(" "); //第四行的1月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印7月的第四行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第四行打印结束printf(" "); //第五行的1月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印7月的第五行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第五行打印结束printf(" "); //第六行的1月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印7月的第六行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第六行打印结束} //第一部分1月、7月打印完毕!void part2(int x) //第二部分2月、8月开始打印!//第二部分{int i,week,week2,y,w,b1,bz1,bz2,yue2;//week,week2用于计算2.1的星期,bz1和bz2为日期的递增b1=8; //表示当前部分的月份printf("2月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("8月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");if(x%4==0){if(x%100!=0)yue2=29;else if(x%100==0&&x%400==0)yue2=29;elseyue2=28;}else{yue2=28;}if(x<2000) //计算小于两千的1.1星期{ y=(x-1)%100;w=(int)(y+(y/4)+(19/4)-38+(26*1.5));week=w%7;}if(x>=2000) //计算大于两千的1.1星期{ y=(x-1)%100;w=(int)(y+(y/4)+(20/4)-40+(26*1.5));week=w%7;}week2=weak(x,b1); //调用计算星期的函数(7.1) for(i=0;i<week;i++){printf(" ");}bz1=1,bz2=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第一行for(i=0;i<=week2;i++){printf(" ");}for(i=0;i<(7-week2);i++){if(bz2<10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第一行打印完毕printf(" "); //2月份的第二行for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第二行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第二行打印结束printf(" "); //第三行的2月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第三行for(i=0;i<7;i++){ if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第三行打印结束printf(" "); //第四行的2月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第四行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第四行打印结束printf(" "); //第五行的2月份for(i=0;i<7;i++){if(bz1<=yue2){printf(" %d ",bz1);}if(bz1>yue2){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第五行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第五行打印结束printf(" "); //第六行的2月份for(i=0;i<7;i++){if(bz1<=yue2){printf(" %d ",bz1);}if(bz1>yue2){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印8月的第六行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第六行打印结束}void part3(int x) //第三部分{int i,week,week2,a1,b1,bz1,bz2;//week,week2用于计算1.1的星期,bz1和bz2为日期的递增a1=3,b1=9; //表示当前不封的月份printf("3月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("9月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");week=weak(x,a1); //调用计算星期的函数(3.1)week2=weak(x,b1); //调用计算星期的函数(8.1)for(i=0;i<week;i++){printf(" ");}bz1=1,bz2=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印9月的for(i=0;i<=week2;i++){printf(" ");}for(i=0;i<(7-week2);i++){if(bz2<10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第一行打印完毕printf(" "); //第二行的3月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印9月的第二行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第二行打印结束printf(" "); //第三行的3月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印9月的第三行for(i=0;i<7;i++){ if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第三行打印结束printf(" "); //第四行的3月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印9月的第四行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第四行打印结束printf(" "); //第五行的3月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印9月的第五行for(i=0;i<7;i++){if(bz2<=30){printf(" %d ",bz2);}if(bz2>30){printf(" ");}bz2=bz2+1;}printf("\n"); //第五行打印结束printf(" "); //第六行的3月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印9月的第六行for(i=0;i<7;i++){if(bz2<=30){printf(" %d ",bz2);}if(bz2>30){printf(" ");}bz2=bz2+1;}printf("\n"); //第六行打印结束}void part4(int x) //第四部分{int i,week,week2,a1,b1,bz1,bz2;//week,week2用于计算1.1的星期,bz1和bz2为日期的递增a1=4,b1=10; //表示当前不封的月份printf("4月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("10月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");week=weak(x,a1); //调用计算星期的函数(4.1)week2=weak(x,b1); //调用计算星期的函数(10.1)for(i=0;i<week;i++){printf(" ");}bz1=1,bz2=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印4月的for(i=0;i<=week2;i++){printf(" ");}for(i=0;i<(7-week2);i++){if(bz2<10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第一行打印完毕printf(" "); //第二行的4月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印10月的第二行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第二行打印结束printf(" "); //第三行的4月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印10月的第三行for(i=0;i<7;i++){ if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第三行打印结束printf(" "); //第四行的4月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印10月的第四行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第四行打印结束printf(" "); //第五行的10月份for(i=0;i<7;i++){if(bz1<=30){printf(" %d ",bz1);}if(bz1>30){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印10月的第五行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第五行打印结束printf(" "); //第六行的4月份for(i=0;i<7;i++){if(bz1<=30){printf(" %d ",bz1);}if(bz1>30){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印10月的第六行for(i=0;i<7;i++){if(bz2<=31){printf(" %d ",bz2);}if(bz2>31){printf(" ");}bz2=bz2+1;}printf("\n"); //第六行打印结束}void part5(int x) //第五部分{int i,week,week2,a1,b1,bz1,bz2;//week,week2用于计算1.1的星期,bz1和bz2为日期的递增a1=5,b1=11; //表示当前不封的月份printf("5月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("11月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");week=weak(x,a1);week2=weak(x,b1); //调用计算星期的函数(11.1)for(i=0;i<week;i++){printf(" ");}bz1=1,bz2=1;for(i=0;i<(7-week);i++){if(bz1<10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印11月的for(i=0;i<=week2;i++){printf(" ");}for(i=0;i<(7-week2);i++){if(bz2<10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第一行打印完毕printf(" "); //第二行的5月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印11月的第二行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10)bz2=bz2+1;}printf("\n"); //第二行打印结束printf(" "); //第三行的5月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印11月的第三行for(i=0;i<7;i++){ if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第三行打印结束printf(" "); //第四行的5月份for(i=0;i<7;i++){ if(bz1<10){printf(" %d ",bz1);}if(bz1>=10){printf(" %d ",bz1);}bz1=bz1+1;}printf(" "); //从这里开始打印11月的第四行for(i=0;i<7;i++){if(bz2<10){printf(" %d ",bz2);}if(bz2>=10){printf(" %d ",bz2);}bz2=bz2+1;}printf("\n"); //第四行打印结束printf(" "); //第五行的5月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31)bz1=bz1+1;}printf(" "); //从这里开始打印11月的第五行for(i=0;i<7;i++){if(bz2<=30){printf(" %d ",bz2);}if(bz2>30){printf(" ");}bz2=bz2+1;}printf("\n"); //第五行打印结束printf(" "); //第六行的5月份for(i=0;i<7;i++){if(bz1<=31){printf(" %d ",bz1);}if(bz1>31){printf(" ");}bz1=bz1+1;}printf(" "); //从这里开始打印11月的第六行for(i=0;i<7;i++){if(bz2<=30){printf(" %d ",bz2);}if(bz2>30){printf(" ");}bz2=bz2+1;}printf("\n"); //第六行打印结束}void part6(int x) //第六部分{int i,week,week2,a1,b1,bz1,bz2;//week,week2用于计算1.1的星期,bz1和bz2为日期的递增a1=6,b1=12; //表示当前不封的月份printf("6月Sun Mon Tue Wed Thu Fri Sat");printf(" ");printf("12月Sun Mon Tue Wed Thu Fri Sat\n");printf(" ");week=weak(x,a1);week2=weak(x,b1); //调用计算星期的函数(12.1)for(i=0;i<week;i++){printf(" ");}。
万年历打印系统(c语言程序)

#include<stdio.h>#include<stdlib.h>#include<time.h>#include<string.h>void yi_nian();//输出当年日历int leap(int year);//判断给定年份是否是闰年long int f(int year,int month);long int g(int month);long int n(int year,int month,int day);int w(int year,int month,int day);void ch_month_1(int i);//用switch语句将数字转化为英文int Y i_yue_time();//输出当月日期及当天时间void getcl(int a[]);//计算当天时间void printcal(int a[]);//计算当月日期int date[12][6][7];intday_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}}; FILE *fp;int main(){yi_nian();Yi_yue_time();return 0;}//输出当年日历void yi_nian(){int b[7];int sw,leap,i,j,k,wd,day;int year;char title[]="SUM MON TUE WED THU FRI SA T";getcl(b);fp=fopen("D:\\rili.txt","w+");if(!fp){printf("file cannot be opened");exit(0);}year=b[0];sw=w(year,1,1);leap=year%4==0&&year%100||year%400==0;for(i=0;i<12;i++)for(j=0;j<6;j++)for(k=0;k<7;k++)date[i][j][k]=0;for(i=0;i<12;i++)for(wd=0,day=1;day<=day_tbl[leap][i];day++){date[i][wd][sw]=day;sw=++sw%7;if(sw==0) wd++;}fprintf(fp,"当年日历:\n");fprintf(fp,"\n *The Calendar of Y ear %d* \n ",b[0]);//输出当年日历的表头printf("当年日历:\n");printf("\n *The Calendar of Y ear %d* \n ",b[0]);for(i=0;i<6;i++){for(wd=0,k=0;k<7;k++)wd+=date[i][5][k]+date[i+6][5][k];wd=wd?6:5;fprintf(fp,"\n ");//用switch语句将数字转化为英文switch(i+1){case 1:fprintf(fp,"January ");break;case 2:fprintf(fp,"Februry ");break;case 3:fprintf(fp,"March ");break;case 4:fprintf(fp,"April ");break;case 5:fprintf(fp,"May ");break;case 6:fprintf(fp,"June ");break;case 7:fprintf(fp,"July ");break;case 8:fprintf(fp,"August ");break;case 9:fprintf(fp,"September");break;case 10:fprintf(fp,"October ");break;case 11:fprintf(fp,"November");break;case 12:fprintf(fp,"December");break;}fprintf(fp,"");switch(i+7){case 1:fprintf(fp,"January ");break;case 2:fprintf(fp,"Februry ");break;case 3:fprintf(fp,"March ");break;case 4:fprintf(fp,"April ");break;case 5:fprintf(fp,"May ");break;case 6:fprintf(fp,"June ");break;case 7:fprintf(fp,"July ");break;case 8:fprintf(fp,"August ");break;case 9:fprintf(fp,"September");break;case 10:fprintf(fp,"October ");break;case 11:fprintf(fp,"November");break;case 12:fprintf(fp,"December");break;}fprintf(fp,"\n ___________________________ ___________________________");fprintf(fp,"\n %s %s \n ",title,title); //输出星期printf("\n ");ch_month_1(i+1);printf(" ");ch_month_1(i+7);printf("\n ___________________________ ___________________________");printf(" \n %s %s \n ",title,title);for(j=0;j<wd;j++) //输出每个月的天数{fprintf(fp,"");printf(" ");for(k=0;k<7;k++)if(date[i][j][k]){fprintf(fp,"%4d",date[i][j][k]);printf("%4d",date[i][j][k]);}else{fprintf(fp,"");printf(" ");}fprintf(fp,"");printf(" ");for(k=0;k<7;k++)if(date[i+6][j][k]){fprintf(fp,"%4d",date[i+6][j][k]);printf("%4d",date[i+6][j][k]);}else{fprintf(fp,"");printf(" ");}fprintf(fp," \n ");printf(" \n ");}}fprintf(fp,"\n\n\n\n\n");printf("\n\n\n\n\n");fclose(fp);}int leap(int year)//判断给定年份是否是闰年{if(year%4 == 0 && year %100 != 0)return 1;else{if(year % 400 == 0)return 1;elsereturn 0;}return 0;}long int f(int year,int month){if(month<3) return year-1;else return year;}long int g(int month){if(month<3) return month+13;else return month+1;}long int n(int year,int month,int day){return 1461L*f(year,month)/4+153L*g(month)/5+day; }int w(int year,int month,int day){return(int) ((n(year,month,day)%7-621049L%7+7)%7); }//用switch语句将数字转化为英文void ch_month_1(int i){switch(i){case 1:printf("January ");break;case 2:printf("Februry ");break;case 3:printf("March ");break;case 4:printf("April ");break;case 5:printf("May ");break;case 6:printf("June ");break;case 7:printf("July ");break;case 8:printf("August ");break;case 9:printf("September");break;case 10:printf("October ");break;case 11:printf("November");break;case 12:printf("December");break;}}//该函数是用于输出当月的日历及当天的时间int Y i_yue_time(){int a[7];int all;int i;all=(243+5);i=all%7;getcl(a);printcal(a);//打开文件fp=fopen("D:\\rili.txt","a+");if(!fp){printf("file cannot be opened");exit(0);}fprintf(fp,"今天是:%d 年%d月%d日, ",a[0],a[1],a[2]);//用switch语句将数字转化为汉字switch(i){case 0:fprintf(fp,"星期日");break;case 1:fprintf(fp,"星期一");break;case 2:fprintf(fp,"星期二");break;case 3:fprintf(fp,"星期三");break;case 4:fprintf(fp,"星期四");break;case 5:fprintf(fp,"星期五");break;case 6:fprintf(fp,"星期六");break;}fprintf(fp,"\n当前时间是:%d时%d分%d秒\n",a[3],a[4],a[5]);fprintf(fp,"___________________________________________________\n");printf("今天是:%d 年%d月%d日, ",a[0],a[1],a[2]);//用switch语句将数字转化为汉字switch(i){case 0:printf("星期日");break;case 1:printf("星期一");break;case 2:printf("星期二");break;case 3:printf("星期三");break;case 4:printf("星期四");break;case 5:printf("星期五");break;case 6:printf("星期六");break;}printf("\n当前时间是:%d时%d分%d秒\n",a[3],a[4],a[5]);printf("___________________________________________________\n");fclose(fp);return 0;}//将当前时间保存在数组中,total为天数(到那个月为止),1970.1.1为星期四void getcl(int a[]){// int flag,i,sum;int start = 1970;int total = 0;int sum=0,tem=0,i=1,flag=0;time_t t = time(NULL);t += 8*3600;//时区while(start)//计算总秒数{if(leap(start)){flag = 1;t -= 366*24*3600;}else{flag = 0;t -= 365*24*3600;}if(t < 0)break;if(flag)total += 366;elsetotal += 365;sum = t;start++;}t = sum;a[0] = start;for(; ; i++){if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) {flag = 1;total += 31;t -= 31*24*3600;}if(i == 4 || i == 6 || i == 9 || i == 11){flag = 2;total += 30;t -= 30*24*3600;}if(i == 2)//判断是否为闰年{if(leap(start)){flag = 3;total += 29;//闰年t -= 29*24*3600;}else{flag = 4;total += 28;//平年t -= 28*24*3600;}}if(t < 0){total = total - 32 + flag;break;}sum = t;}a[1] = i;t = sum;for(i = 1; ;i++)//计算天{t -= 24*3600;if(t < 0)break;sum = t;}a[2] = i;t = sum;for(i = 0; ;i++)//计算时{t -= 3600;if(t < 0)break;sum = t;}a[3] = i;t = sum;for(i = 0; ;i++)//计算分{t -= 60;if(t < 0)break;sum = t;//秒}a[4] = i;a[5] = sum;a[6] = total;return ;}//a[0]年,1月,2日,3时,4分,5秒,6天数(到那个月为止);void printcal(int a[]){//如果是sun在开头的话,那么星期天可以在0那个位置int begin = (a[6]+4)%7;int i = a[1];int flag;fp=fopen("D:\\rili.txt","a+");if(!fp){printf("file cannot be opened");exit(0);}if(i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12)flag = 1;if(i == 4 || i == 6 || i == 9 || i == 11)flag = 2;if(i == 2){if(leap(a[0]))flag = 3;elseflag = 4;}fprintf(fp,"\n\n当月日历及当天时间:");fprintf(fp,"\n\t\t\tCalendar\n");fprintf(fp,"\t\t\t");//用switch语句将数字转化为英文switch(a[1]){case 1:fprintf(fp,"January ");break;case 2:fprintf(fp,"Februry ");break;case 3:fprintf(fp,"March ");break;case 4:fprintf(fp,"April ");break;case 5:fprintf(fp,"May ");break;case 6:fprintf(fp,"June ");break;case 7:fprintf(fp,"July ");break;case 8:fprintf(fp,"August ");break;case 9:fprintf(fp,"September");break;case 10:fprintf(fp,"October ");break;case 11:fprintf(fp,"November");break;case 12:fprintf(fp,"December");break;}fprintf(fp,"\n___________________________________________________"); fprintf(fp,"\nSun\tMon\tTue\tWed\tThu\tFri\tSat\n");printf("\n\n当月日期及当天时间:");printf("\n\t\t\tCalendar\n");printf("\t\t\t");ch_month_1(a[1]);printf("\n___________________________________________________"); printf("\nSun\tMon\tTue\tWed\tThu\tFri\tSat\n");for(i = 1; i < 32 - flag;){int count = 0;while(begin){count++;fprintf(fp,"\t");printf("\t");begin--;}while(count < 7){count++;fprintf(fp,"%d\t",i);printf("%d\t",i);if(i >= 32 - flag)break;elsei++;}fprintf(fp,"\n");printf("\n");}fclose(fp);}11。
C语言实训--万年历源代码

C语言实训--万年历源代码# include#include#include#include#include# define YEAR 365int numday[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31}, {31,29,31,30,31,30,31,31,30,31,30,31}};int leap(int year);int calday(int y,int m);int counterdays(int year,int month,int day);int week(int year,int month,int day);int eachyeartotal(int year,int month,int day);int maxDay(int y,int month);void print(int y,int m,int w);void festival (int year,int month,int day);int IsLeap(int y);int guanli(int i);void rili(int year,int month);int rili1();void rili2();void rili3();void rili4();void rili5();void fan();void show(int year,int month,int date,int sec,int mini,int hour);int main(){int i;printf("***************************************\n"); printf("1.查询日历,输入年份:\n");printf("2.查询该月日历及对应星期,输入年份和月份:\n"); printf("3.查询星期几及节日,输入年月日:\n");printf("4.距您输入日期还有多少天,输入日期:\n"); printf("5.通过键盘上下控制不同年月日:\n");scanf("%d",&i);guanli(i);return 0;}int guanli(int i){switch(i){case 1:rili1();return main();case 2:rili2();return main();case 3:rili3();return main();case 4:rili4();return main();case 5:rili5();return main();}return 0;}int rili1(){int year;int n,i;printf("输入年份:");scanf("%d",&year);printf("the calendar of the year%d\n",year);printf("\n");printf("=============================\n"); for(i=1;i<13;i++){printf(" %d月份\n",i);rili(year,i);}n = leap(year);return 0;}void rili2(){int year,month,w;printf("输入年月:");scanf("%d%d",&year,&month);w=calday(year,month);print(year,month,w);}void rili3(){int year,month,day,number;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day);festival(year,month,day);number= week(year,month,day);printf("星期%d",number);}void rili4(){int year,month,day;printf("输入年月日:");scanf("%d%d%d",&year,&month,&day); eachyeartotal( year,month,day);counterdays(year,month,day);}void rili5(){int year,month,date,sec,mini,hour;fan();show(year,month,date,sec,mini,hour);}int leap(int year){int n=(year%4==0 && year%100!=0 || year%100!=0); return n;}void rili(int year,int month){int i,day,first_day,flag,year1,year2;int temp = 6;flag =leap(year);year1=year/100;year2=year%100;if(year>2000){year1=year1-20;day = year1/4;day+=(YEAR+24)*year1+YEAR*year2+(year2-1)/4;if(year>2000)day++;switch(month){case 1:day; break;case 2:day+=31;break;case 3:day+=59+flag;break;case 4:day+=90+flag;break;case 5:day+=120+flag;break;case 6:day+=151+flag;break;case 7:day+=181+flag;break;case 8:day+=212+flag;break;case 9:day+=243+flag;break;case 10:day+=273+flag;break;case 11:day+=304+flag;break;case 12:day+=334+flag;break;}day+=temp;first_day=day%7;}else{year1 = 20-1-year;year2=100-year2-1;day+=(YEAR+24)*year1+YEAR*year2+year2/4; switch(month){case 12:day+=31;break;case 11:day+=61;break;case 10:day+=92;break;case 9:day+=122;break;case 8:day+=153;break;case 7:day+=184;break; case 6:day+=214;break; case 5:day+=245;break; case 4:day+=275;break; case 3:day+=306;break; case 2:day+=334+flag;break; case 1:day+=365+flag;break; }day-=temp;day = day%7;first_day=(7-day)%7;}switch(month){case 1:case 2:month=28+flag;break; case 3:case 4:case 5:case 6:case 7:case 8:case 9:case 10:case 11:month=30;break; case 12:month =31;break;}for(i=1;i<4*first_day;i++) printf(" ");for(i=0;i<month;i++)< p="">{printf("%4d",i+1);if((first_day+i)%7==6)printf("\n");}printf("\n");printf("===============================\n");}///////////////////////////////////////////////////////////int counterdays(int year,int month,int day){int year1,days0,days1,month1,days,day1;time_t timep;struct tm*p;time(&timep);p=gmtime(&timep);year1=(1900+p->tm_year);month1=(1+p->tm_mon);day1=(p->tm_mday);days0=(year-1)*365 + (year-1)/4 - (year-1)/100 + (year-1)/400 +eachyeartotal (year,month,day);days1=(year1 - 1)*365+(year1-1)/4-(year1-1)/100 + (year1 - 1)/400 +eachyeartotal (year1,month1,day1);days=days0-days1;printf("\n今天距%d年%d月%d日还有%d天\n\n",year,month,day,days);return days;}int eachyeartotal(int year,int month,int day){int i,sum=0;for(i=1;i<month;i++)< p="">{sum+=maxDay(year,i);}sum+=day;return sum;}int IsLeap(int y){if(y%4==0 && y%100!=0 || y%400==0) return 1; else return 0;}int maxDay(int y,int month){int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};if(IsLeap(y))a[1]=29;return a[month-1];}///////////////////////////////////////void festival (int year,int month,int day){if (month==1 && day==1) printf (",这天是元旦");if (month==2 && day==14) printf (",这天是情人节"); if (month == 3)switch(day){case 8:printf (",这天是妇女节"); break;case 12:printf (",这天是植树节");}if (month==1 && day==1) printf (",这天是愚人节");if(month == 5)switch (day){case 1:printf(",这天是劳动节");break;case 4:printf(",这天是青年节");}if (month==6 && day==1) printf (",这天是儿童节");if (month==7 && day==1) printf (",这天是建党节");if (month==8 && day==1) printf (",这天是建军节");if (month==9 && day==10) printf (",这天是教师节");if (month==10 && day==1) printf (",这天是国庆节");printf("\n");}int week(int year,int month,int day){int number = (year-1)+(year-1)/4 - (year-1)/100+(year-1)/400+eachyeartotal(year,month,day);number = number%7;return number;}/////////////////////////////////////////////void print(int y,int m,int w){int i,l;printf("Calendar %d-%02d\n",y,m);printf("---------------------\n");printf("Su Mo Tu We Th Fr Sa \n");printf("---------------------\n");for (i=0;i<w;i++)< p=""> printf(" ");if (IsLeap(y))l=1;elsel=0;for (i=1;i<=numday[l][m-1];i++) {printf("%-3d",i);w++;if (w%7==0)printf("\n");}if (w%7) printf("\n");printf("---------------------\n"); }int calday(int y,int m){int d=0,w;while (y>1910){if (IsLeap(y)) d+=366;else d+=365;y--;}while (m>1){ --m;d+=numday[0][m-1];}w=(d+1)%7;return w;}//////////////////////////////////////////void show(int year,int month,int date,int sec,int mini,int hour) {const char month_str[][4]={"","Jan","Feb","Mar","Apl", "May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};const int month_day[]={0,31,28,31,30,31,30,31,31,30,31,30,31};int i,j,wdays,mdays,days;for(i=1,days=0;i<year;i++)< p="">{if(leap(i))days += 366;}else{days += 365;}}for(i=1;i<month;i++)< p="">{if(i==2 && leap(year)){days+=29;}else{days+=month_day[i];}}printf(" %s.%d.%d %d:%d:%d \n",month_str[month],date,year,hour,mini,sec);printf(" 一二三四五六日\n");wdays = days % 7;for( j = 0; j < wdays; j++){printf(" ");}if(month == 2 && leap(year)){mdays=29;}else{mdays= month_day[month];}for(i=1;i<=mdays;i++){if( i > 1 && days % 7 == 0 ){printf("\n");}printf("%4d",i);days=days+1; }printf("\n---------------------------\n\n\n");}{time_t rawtime;struct tm *info;int year,month,date,sec,mini,hour; char ch;time ( &rawtime );info = localtime ( &rawtime );year =info->tm_year + 1900; month =info->tm_mon + 1;date =info->tm_mday;hour =info->tm_hour;mini =info->tm_min;sec =info->tm_sec;while(1){show(year,month,date,sec,mini,hour); printf("↑......上一年\n\n");printf("↓......下一年\n\n");printf("←....前一个月\n\n");pr intf("→....后一个月\n\n");printf("Esc.......退出\n\n");ch=getch();switch(ch){case 27://Ecs exit(0);case -32://Navigatorch=getch();if(ch==77){//Rightyear+=(month==12)?1:0;month=month%12+1;}else if(ch==75){year-=(month==1)?1:0; month=(month-2+12)%12+1; }else if(ch==72)year--;else if(ch==80)year++;system("cls");}}</month;i++)<></year;i++)<></w;i++)<></month;i++)<></month;i++)<>。
C语言编程:输入任意一个年份和月份,输出该月份的公历日历

//⑴程序功能描述: 输入任意一个年份和月份,按以下格式输出该月份的公历日历。
// 要求由程序计算出来该月份的1日是星期几,并用循环控制打印.// 打印样例如下:// 2012年日历// ========================================// 9月// ----------------------------------------// 日一二三四五六// 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// ----------------------------------------//⑵程序版本号: 1.0 创作日期: 2012.5.11//⑶作者信息描述:班级:国经贸1105 姓名:陈君君学号:1111141169//⑷问题分析描述: 1.判断某一年是否为闰年的条件是:a.年份能否被4整除,但不能被100整除;b.年份能被400整除;// 2.公元1年到year年共有(y-1)年,其中天数为:(y-1)*365+闰年的个数.//⑸算法设计描述:1.根据year,计算2月份的天数;// 2.计算year年1月1日到1年1月1日中间闰年的个数;// 3.计算year年1月1日到1年1月1日的天数,存入变量d1;// 4.计算year年month月1日到year年1月1日的天数,存入变量d2;// 5.计算year年month月1日是星期几,存入变量weekday;// 6.计算year年month月的天数,存入变量d3.//⑹关键语句注释说明:1.recount为year年1月1日到1年1月1日中间闰年的个数;// 2.d1为year年1月1日到1年1月1日的天数;// 3.d2为year年month月1日到year年1月1日的天数;// 4.weekday为year年month月1日是星期几;// 5.d3为year年month月的天数.//⑺调试运行过程中出现的错误及改正方法:“recount”错写为“rcount”,应写为“recount”//⑻输入数据样例:2012 9// 输出数据样例:// 2012年日历// ========================================// 9月// ----------------------------------------// 日一二三四五六// 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// ----------------------------------------#include <stdio.h>void main(){int y,m,i,d1,d2,d3,w,n=0,recount=0;int t[]={31,28,31,30,31,30,31,31,30,31,30,31};//输入year年和month月printf("请输入年和月:");scanf("%d%d",&y,&m);//根据year,计算2月份的天数if(y%4==0&&y%100!=0||y%400==0)t[1]=29;//计算year年1月1日到1年1月1日中间闰年的天数recount=(y-1)/4-(y-1)/100+(y-1)/400;//计算year年1月1日到1年1月1日的天数,存入变量d1d1=(y-1)*365+recount;//计算year年month月1日到year年1月1日的天数,存入变量d2d2=0;for(i=0;i<m-1;i++)d2+=t[i];//计算year年month月1日是星期几,存入变量weekdayw=(d1+d2+1)%7;//计算year年month月的天数,存入变量d3d3=t[m-1];//输出“表头”printf("%23d年日历\n",y);printf("===================================================\n"); printf("%23d月\n",m);printf("---------------------------------------------------\n");printf("日\t一\t二\t三\t四\t五\t六\n");//输出1日前的空格printf("\t");//输出所有日期,7个一行for(i=1;i<=d3;i++){printf("%d\t",i);if((i+w)%7==0)printf("\n");}printf("\n--------------------------------------------------\n");}。
打印日历每行三个月份源代码

case 5:days = 120 + day;break;
case 6:days = 151 + day;break;
case 7:days = 181 + day;break;
case 8:days = 212 + day;break;
case 9:days = 243 + day;break;
break;
case 4:
mfOfWeek = zhouji(year,10, 1);
mfDays = 31;
msOfWeek = zhouji(year, 11, 1);
msDays = 30;
mtOfWeek = zhouji(year, 12, 1);
mtDays = 31;
PrintOneQuarter(year, mfOfWeek, mfDays, msOfWeek, msDays, mtOfWeek, mtDays, hang);
{
if (month > 2)
{
++days;
}
}
return days;
}
void PrintOneQuarter(int year, int mfOfWeek, int mfDays, int msOfWeek,
int msDays, int mtOfWeek, int mtDays, int hang)
int msOfWeek, int msDays, int mtOfWeek, int mtDays, int hang);
int zhouji(int year, int month, int day);
c日历源代码
#include <stdio.h>#include <windows.h>void month(int a)//输出月份和星期{printf("\t");switch (a){case 1:printf("Janurary 1\t\t\t\t");case 2:printf("February 2");break;case 3:printf("March 3 \t\t\t\t");case 4:printf("April 4");break;case 5:printf("May 5 \t\t\t\t");case 6:printf("June 6");break;case 7:printf("July 7 \t\t\t\t");case 8:printf("August 8");break;case 9:printf("September 9 \t\t\t");case 10:printf("October 10");break;case 11:printf("November 11 \t\t\t");case 12:printf("December 12");break;}printf("\n\t");printf("Sun Mon Tue Wed Thu Fri Sat\t\t");printf("Sun Mon Tue Wed Thu Fri Sat\n\t");}int date(int a,int b,int c)//输出日期a为月份b为判断润平年r为某月最后一天的星期数{void space(int a);int i,j,n,m,x=1,y,k=0;switch (a){case 1:n=31;break;case 3:n=31;m=30;break;case 5:n=31;m=30;break;case 7:n=31;m=31;break;case 9:n=30;m=31;break;case 11:n=30;m=31;break;}if (a==1)if (b==0)m=28;elsem=29;for (i=1,j=c;i<=n;i++,j++){printf("%2d ",i);if (j==7 && i!=n){j=0;printf("\t\t");for (y=1;x<=m;y++){if (k==0){c=(c+n-1)%7+1;while (c>7)c=c-7;space(c);y=c;k=1;if (y<1)y=1;}printf("%2d ",x);if (y==7 && x!=m){x++;printf("\n\t");y=0;break;}if (x==m && y==7){x++;printf("\n\t");y=0;break;}if (x==m && y!=7)printf("\n\t");x++;}}if (i==n && j==7){j=0;i=0;break;}}if (i!=0)while (7-j){printf(" ");j=1+j;}printf("\t\t");if (x<=m)for (y=1;x<=m;y++,x++){printf("%2d ",x);if (y==7 && x!=m){printf("\n\t\t\t\t\t\t");y=0;}}printf("\n\t===========================\t\t");printf("===========================\n\n");if (y>7 || y==0)y=1;return y;}int leap(int a)//判断是否为闰年{int n;if ((a%4==0 && a%100!=0) || a%400==0)n=1;elsen=0;return n;}int print()//输出日历{void shxi(int a);void ganzhi(int a);void space(int a);int n,days,year,result,r,i,week,rem;while (1){printf("\t\t请输入年份:");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12|240);//设置字体颜色i=scanf("%d",&year);if (i==1){SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0|240);break;}elsefflush(stdin);printf("\t\t错误输入!\n");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0|240);}ganzhi(year);shxi(year);n=leap(year);if (n)days=366;elsedays=365;result=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7-n;//一月一号星期几的判断公式r=result+1;week=(days+result)/7;rem=(days +result)%7;if (rem!=0) week=week+rem/7+1;//计算这一年有多少周printf("\t\t\t\t\t%d周\n",week);printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");for (i=1;i<=12;i+=2){month(i);space(r);r=date(i,n,r);}printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");return 0;}void space(int a)//输出空格{int i;for (i=0;i<a-1;i++)printf(" ");}int main()//主程序输出选择菜单{void fprint();int n;system("color f0");//设置背景和字体颜色do{printf("\t\t* * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t*\t1---查询(Search) *\n");printf("\t\t*\t2---导出(Lead) *\n");printf("\t\t*\t0---关闭(Close) *\n");printf("\t\t* * * * * * * * * * * * * * * * * * * * * *\n");printf("\t\t请选择:");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12|240);//设置字体颜色scanf("%d",&n);system("cls");SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),0|240);switch (n){case 1:print();break;case 2:fprint();break;case 0:break;default:SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12|240);printf("\ t\t错误选择!请重选");}fflush(stdin);printf("\n");} while(n!=0);return 0;}void shxi(int a)//判断这一年的属性并输出{int s;if (a>=2008) //属性判断公式s=((a-2008)%100)%12+1;elses=13-((2008-a)%100)%12;switch (s){case 1:printf("鼠");break;case 2:printf("牛");break;case 3:printf("虎");break;case 4:printf("兔");break;case 5:printf("龙");break;case 6:printf("蛇");break;case 7:printf("马");break;case 8:printf("羊");break;case 9:printf("猴");break;case 10:printf("鸡");break;case 11:printf("狗");break;case 12:printf("猪");break;}}void ganzhi(int a)//判断天干地支{int g,z;g=(a-3)%10;//天干判断公式z=(a-3)%12;//地支判断公式printf("\t\t\t");switch (g){case 1:printf("甲");break;case 2:printf("乙");break;case 3:printf("丙");break;case 4:printf("丁");break;case 5:printf("戊");break;case 6:printf("己");break;case 7:printf("庚");break;case 8:printf("辛");break;case 9:printf("壬");break;case 0:printf("癸");break;}switch (z){case 1:printf("子");break;case 2:printf("丑");break;case 3:printf("寅");break;case 4:printf("卯");break;case 5:printf("辰");break;case 6:printf("巳");break;case 8:printf("未");break;case 9:printf("申");break;case 10:printf("酉");break;case 11:printf("戌");break;case 0:printf("亥");break;}printf("年\t");}FILE *fp;//定义文件指针void fmonth(int a)//导出月份和星期{fprintf(fp,"\t");switch (a){case 1:fprintf(fp,"Janurary 1\t\t\t\t");case 2:fprintf(fp,"February 2");break;case 3:fprintf(fp,"March 3 \t\t\t\t");case 4:fprintf(fp,"April 4");break;case 5:fprintf(fp,"May 5 \t\t\t\t");case 6:fprintf(fp,"June 6");break;case 7:fprintf(fp,"July 7 \t\t\t\t");case 8:fprintf(fp,"August 8");break;case 9:fprintf(fp,"September 9 \t\t\t");case 10:fprintf(fp,"October 10");break;case 11:fprintf(fp,"November 11 \t\t\t");case 12:fprintf(fp,"December 12");break;}fprintf(fp,"\n\t");fprintf(fp,"Sun Mon Tue Wed Thu Fri Sat\t\t");fprintf(fp,"Sun Mon Tue Wed Thu Fri Sat\n\t"); }int fdate(int a,int b,int c)//导出日期{int i,j,n,m,x=1,y,k=0,r;switch (a){case 1:n=31;break;case 3:n=31;m=30;break;case 5:n=31;m=30;break;case 7:n=31;m=31;break;case 11:n=30;m=31;break;}if (a==1)if (b==0)m=28;elsem=29;for (i=1,j=c;i<=n;i++,j++){fprintf(fp,"%2d ",i);if (j==7 && i!=n){j=0;fprintf(fp,"\t\t");for (y=1;x<=m;y++){if (k==0){c=(c+n-1)%7+1;while (c>7)c=c-7;for (r=0;r<c-1;r++)fprintf(fp," ");y=c;k=1;if (y<1)y=1;}fprintf(fp,"%2d ",x);if (y==7 && x!=m){x++;fprintf(fp,"\n\t");y=0;break;}if (x==m && y==7){x++;fprintf(fp,"\n\t");y=0;break;}if (x==m && y!=7)fprintf(fp,"\n\t");x++;}}if (i==n && j==7){j=0;i=0;break;}}if (i!=0)while (7-j){fprintf(fp," ");j=1+j;}fprintf(fp,"\t\t");if (x<=m)for (y=1;x<=m;y++,x++){fprintf(fp,"%2d ",x);if (y==7 && x!=m){fprintf(fp,"\n\t\t\t\t\t\t");y=0;}}fprintf(fp,"\n\t===========================\t\t");fprintf(fp,"===========================\n\n");if (y>7 || y==0)y=1;return y;}void fprint()//导出文件{void fshxi(int a);void fganzhi(int a);void fspace(int a);int n,days,year,result,r,i,week,rem;char filename[10],type[]=".txt";while (1){printf("\t\t请输入年份:");i=scanf("%d",&year);if (i==1)break;elsefflush(stdin);printf("\t\t错误输入!\n");}printf("\t\t请输入导出文件名:");scanf("%s",&filename);fp=fopen(strcat(filename,type),"w");//以写的方式打开文件fganzhi(year);fshxi(year);n=leap(year);if (n)days=366;elsedays=365;result=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+days)%7-n;r=result+1;week=(days+result)/7;rem=(days +result)%7;if (rem!=0) week=week+rem/7+1;fprintf(fp,"\t\t\t\t\t\t\t\t%d周\n",week);fprintf(fp," * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");for (i=1;i<=12;i+=2){fmonth(i);fspace(r);r=fdate(i,n,r);}fprintf(fp," * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");fclose(fp);//关闭文件printf("\t\t已导出完成");}void fspace(int a)//导出空格{int i;for (i=0;i<a-1;i++)fprintf(fp," ");}void fshxi(int a)//导出属性{int s;if (a>=2008)s=((a-2008)%100)%12+1;elses=13-((2008-a)%100)%12;switch (s){case 1:fprintf(fp,"鼠");break;case 2:fprintf(fp,"牛");break;case 3:fprintf(fp,"虎");break;case 4:fprintf(fp,"兔");break;case 5:fprintf(fp,"龙");break;case 6:fprintf(fp,"蛇");break;case 7:fprintf(fp,"马");break;case 8:fprintf(fp,"羊");break;case 9:fprintf(fp,"猴");break;case 10:fprintf(fp,"鸡");break;case 11:fprintf(fp,"狗");break;case 12:fprintf(fp,"猪");break;}fprintf(fp,"\n");}void fganzhi(int a)//导出天干地支{int g,z;g=(a-3)%10;z=(a-3)%12;fprintf(fp,"\t\t\t%d年\t\t",a);switch (g){case 1:fprintf(fp,"甲");break;case 2:fprintf(fp,"乙");break;case 3:fprintf(fp,"丙");break;case 4:fprintf(fp,"丁");break;case 5:fprintf(fp,"戊");break;case 6:fprintf(fp,"己");break;case 7:fprintf(fp,"庚");break;case 8:fprintf(fp,"辛");break;case 9:fprintf(fp,"壬");break;case 0:fprintf(fp,"癸");break;}switch (z){case 1:fprintf(fp,"子");break;case 2:fprintf(fp,"丑");break;case 3:fprintf(fp,"寅");break;case 4:fprintf(fp,"卯");break;case 5:fprintf(fp,"辰");break;case 6:fprintf(fp,"巳");break;case 7:fprintf(fp,"午");break;case 8:fprintf(fp,"未");break;case 9:fprintf(fp,"申");break;case 10:fprintf(fp,"酉");break;case 11:fprintf(fp,"戌");break;case 0:fprintf(fp,"亥");break;}fprintf(fp,"年\t");}。
日历源代码——java
日历源代码——java//import java.sql.Date;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Locale;public class GregorianCalendar日历 {public static void main(String[] args) { //设置不同地区Locale.setDefault();//创建当前日历对象GregorianCalendar now = new GregorianCalendar();//从当前时期对象是取出时间日期对象//编辑错误:Type mismatch: cannot convert from java.util.Date to java.sql.DateDate date = now.getTime();//将时间日期对象按字符形式打印System.out.println(date.toString());//重新将时间对象设置到日期对象中now.setTime(date);//从当前日期对象是取出当前月份、日期int today =now.get(Calendar.DAY_OF_MONTH);int month = now.get(Calendar.MONTH);//获取本月开始日期now.set(Calendar.DAY_OF_MONTH, 1);//获取本月开始日期在一周中的编号int week = now.get(Calendar.DAY_OF_WEEK);//打印日历头并换行设置当前月中第一天的开始位置System.out.println("星期日星期一星期二星期三星期四星期五星期六");//设置当前月中第一天的开始位置for( int i = Calendar.SUNDAY; i < week; i++){ System.out.print(" ");//按规格打印当前月的日期数字while(now.get(Calendar.MONTH) ==month){//取出当前日期int day =now.get(Calendar.DAY_OF_MONTH);//设置日期数字小于10与不小于10两种情况的打印规格if(day < 10){//设置当前日期的表现形式if(day == today)System.out.print(" <" + day + "> ");elseSystem.out.print(" " + day + " ");}else{//设置当前日期的表现形式if(day == today)System.out.print(" <" + day + "> ");elseSystem.out.print(" " + day + " ");}//设置什么时候换行if(week == Calendar.SATURDAY)System.out.println();//设置日期与星期几为下一天now.add(Calendar.DAY_OF_MONTH, 1);week = now.get(Calendar.DAY_OF_WEEK);}}}}。
c语言编写的万年历(源码)
#include <stdio.h>#include <stdlib.h>//记录平年和闰年各月的天数信息int days[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};//确定该年份是平年还是闰年int fun1(int year){if((year%4==0&&year%100!=0)||year%400==0)return 1;return 0;}//求出该年份以前有多少天int fun2(int year){int sum=0;if(year>1){for(int i=1;i<year;i++){int flag=fun1(i);for(int j=0;j<=12;j++){sum+=days[flag][j];}}}return sum;}//求出当前日期是该年份的第几天int fun3(int year,int month,int day){if(year>0){int sum=0;int flag=fun1(year);for(int i=0;i<month;i++)sum+=days[flag][i];sum+=day;return sum;}}//打印该年份的日历void fun4(int year){for(int month=1;month<=12;month++){int cnt=0;int onemonth[6][7];//用于盛放一个月的二维信息///////////////////////////////////////对一个月的二维信息必须进行初始化for(int x=0;x<6;x++)for(int y=0;y<7;y++)onemonth[x][y]=0;////////////////////////////////int flag=fun1(year);//判断记录该年份是闰年还是平年for(int day=1;day<=days[flag][month];day++){int sum=fun2(year)+fun3(year,month,day);//当前日期离公元第0日的天数?if(sum%7==0)//判断改天是星期几cnt++;//用于记录该月有几行信息?onemonth[cnt][sum%7]=day;//在相应位置填充值}////////////////////////////////////////打印头部信息printf("----------------------公元%d年%d月----------------------\n\n",year,month);printf("星期日星期一星期二星期三星期四星期五星期六\n\n");////////////////////////////////////////打印一个月的二维信息for(int i=0;i<=cnt;i++){for(int j=0;j<7;j++){if(onemonth[i][j]!=0)printf(" %d\t",onemonth[i][j]);elseprintf(" \t");}printf("\n");}printf("\n");}}void main(){system("cls");system("title=万年历"); system("color 0a");int year;int sum=0;printf("请输入年份:"); scanf("%d",&year);if(year>0)fun4(year);system("pause");main();}。
2024年日历A4打印(每月一张-横版-简单版)
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2024年6月June
星期一
星期二
星期三
星期四
星期五
星期六
星期日
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
2024年7月July
星期一
星期二
星期三
2024年1月January
星期一
星期二
星期三
星期四
星期五
星期六
星期日
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
2024年2月February
星期一
星期二
星期三
星期四
星期五
星期六
星期日
1
2
3
4班
5
6
7
8
9
10(休)
11(休)
12(休)
28
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PrintCommonCalendar(year, 2);
break;
case 2:
printf( "七月八月九月\n");
printf( "-------------------- -------------------- --------------------\n");
+ 2, mfDay + 3, mfDay + 4, mfDay + 5, mfDay + 6);
mfDay += 7;
}
else
{ printf(" \n");
for (j = 0; j < 7; ++j)
{
if (mfDay <= mfDays)
printf("%-2d ", mfDay++);
printf( "日一二三四五六日一二三四五六日一二三四五六\n");
PrintCommonCalendar(year, 3);
break;
case 3:
printf( "十月十一月十二月\n");
printf( "-------------------- -------------------- --------------------\n");
int msOfWeek, msDays;
int mtOfWeek, mtDays;
switch (hang)
{
case 1:
mfOfWeek = zhouji(year, 1, 1);
mfDays = 31;
msOfWeek = zhouji(year, 2, 1);
msDays = 28;
mtOfWeek = zhouji(year, 3, 1);
{
printf("%-2d %-2d %-2d %-2d %-2d %-2d %-3d ", mtDay, mtDay + 1, mtDay + 2,
mtDay + 3, mtDay + 4, mtDay + 5, mtDay + 6);
mtDay += 7;
printf(" ");
}
else
{
for (j = 0; j < 7; ++j)
case 4:days = 90 + day;break;
case 5:days = 120 + day;break;
case 6:days = 151 + day;break;
case 7:days = 181 + day;break;
case 8:days = 212 + day;break;
case 9:days = 243 + day;break;
{
if (mtDay <= mtDays)
{
printf("%-2d ", mtDay++);
}else
{
printf(" ");
}
}
}
printf(" ");
}
printf("\n");
}
void PrintCommonCalendar(int year, int hang)
{
int mfOfWeek, mfDays;
return i;
}
int totaldays(int year, int month, int day)
{
int days = 0;
switch (month)
{
case 1:days = day;break;
case 2:days = 31 + day;break;
case 3:days = 59 + day;break;
+ 1, mtDay + 2, mtDay + 3, mtDay + 4, mtDay + 5,
mtDay + 6);
mfDay += 7;
msDay += 7;
mtDay += 7;
continue;
}
if (mfDays - mfDay > 6)
{
printf("\n%-2d %-2d %-2d %-2d %-2d %-2d %-3d ", mfDay, mfDay + 1, mfDay
int msOfWeek, int msDays, int mtOfWeek, int mtDays, int hang);
int zhouji(int year, int month, int day);
int totaldays(int year, int month, int day);
int main()
msDay += 7;
printf(" ");
}
else
{
for (j = 0; j < 7; ++j)
{
if (msDay <= msDays)
{
printf("%-2d ", msDay++);
} else
{
printf(" ");
}
}
}
printf(" ");
if (mtDays - mtDay > 6)
break;
case 4:
mfOfWeek = zhouji(year,10, 1);
mfDays = 31;
msOfWeek = zhouji(year, 11, 1);
msDays = 30;
mtOfWeek = zhouji(year, 12, 1);
mtDays = 31;
PrintOneQuarter(year, mfOfWeek, mfDays, msOfWeek, msDays, mtOfWeek, mtDays, hang);
printf( "日一二三四五六日一二三四五六日一二三四五六\n");
PrintCommonCalendar(year, 4);
break;
default: break;
}
}
}
for(h=0;h<msOfWeek;h++)
printf(" ");
for (j = msOfWeek; j < 7; ++j)
{
printf("%-2d ", msDay);
msDay++;
}
printf(" ");
if (mtOfWeek > 0)
for(h=0;h<mtOfWeek;h++)
{
if (i == 0)
{
if (mfOfWeek > 0)
for(h=0;h<mfOfWeek;h++)
printf(" ");
for (j = mfOfWeek; j < 7; ++j)
{
printf("%2d ", mfDay);
mfDay++;
}
printf(" ");
if (msOfWeek > 0)
msDays = 31;
mtOfWeek = zhouji(year, 6, 1);
mtDays = 30;
PrintOneQuarter(year, mfOfWeek, mfDays, msOfWeek, msDays, mtOfWeek, mtDays,hang);
breห้องสมุดไป่ตู้k;
case 3:
mfOfWeek = zhouji(year, 7, 1);
mtDays = 31;
PrintOneQuarter(year, mfOfWeek, mfDays, msOfWeek, msDays, mtOfWeek, mtDays, hang);
break;
case 2:
mfOfWeek = zhouji(year, 4, 1);
mfDays = 30;
msOfWeek = zhouji(year, 5, 1);
{
int mfDay = 1, msDay = 1, mtDay = 1;
int i, j,h;
if (hang == 1)
{
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
msDays = 29;
}
for (i = 0; i < 6; ++i)
case 10:days = 273 + day;break;
case 11:days = 304 + day;break;
case 12:days = 334 + day;break;
default:break;
}
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)