您好,欢迎访问三七文档
题目:年历显示。功能要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。如下图:以下部分为代码:#includestdio.h#includemath.hvoidpart1(intx);//函数1~6为打印日历的函数voidpart2(intx);voidpart3(intx);voidpart4(intx);voidpart5(intx);voidpart6(intx);intweak(intx,inty);//计算1号对应的星期intweak2(intx,inty,intz);//计算星期,为函数day提供数据intyear(intx);//打印日历的函数intmouth(intx);//打印月历的函数intday(intx);//查询天数的函数intdistance(intx,inty,intz);//提供距离天数查询intmain(){inta;charz;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);}elseif((194001=a)&&(a=204012)){mouth(a);}elseif((19400101=a)&&(a=20401231)){day(a);}else{printf(输入错误,请重新输入!);gotox;}printf(\n);printf(\n);printf(继续查询(y),退出(n):);scanf(%s,&z);if(z=='y'){gotox;}else{;}return0;}intyear(intx){printf(-------------------------------%d年的年历----------------------------\n,x);printf(\n);part1(x);//调用第一部分函数part2(x);part3(x);part4(x);part5(x);part6(x);printf(-----------------------------------------------------------------------\n);return0;}intmouth(intx){inti,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月SunMonTueWedThuFriSat\n);printf();if(n2000)//计算小于两千的1.1星期{y2=(n-1)%100;//y2w=(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;iweek;i++){printf();}bz1=1;for(i=0;i(7-week);i++)//第一行的一月份{if(bz110){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第二行的1月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第三行的1月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第四行的1月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第五行的1月份for(i=0;i7;i++){if(bz1=31){printf(%d,bz1);}if(bz131){printf();}bz1=bz1+1;}printf(\n);printf();//第六行的1月份for(i=0;i7;i++){if(bz1=31){printf(%d,bz1);}if(bz131){printf();}bz1=bz1+1;}printf(\n);}if(y==2)//2月的情况{if(n%4==0){if(n%100!=0)yue2=29;elseif(n%100==0&&n%400==0)yue2=29;elseyue2=28;}else{yue2=28;}printf(2月SunMonTueWedThuFriSat\n);printf();if(n2000)//计算小于两千的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;iweek;i++){printf();}bz1=1;for(i=0;i(7-week);i++)//第一行的2月份{if(bz110){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第二行的2月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第三行的2月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第四行的2月份for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第五行的2月份for(i=0;i7;i++){if(bz1=yue2){printf(%d,bz1);}if(bz1yue2){printf();}bz1=bz1+1;}printf(\n);printf();//第六行的2月份for(i=0;i7;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月SunMonTueWedThuFriSat\n,y);printf();week=weak(n,y);for(i=0;iweek;i++)//第一行{printf();}bz1=1;for(i=0;i(7-week);i++){if(bz110){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第二行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第三行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第四行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第五行for(i=0;i7;i++){if(bz1=31){printf(%d,bz1);}if(bz131){printf();}bz1=bz1+1;}printf(\n);printf();//第六行for(i=0;i7;i++){if(bz1=31){printf(%d,bz1);}if(bz131){printf();}bz1=bz1+1;}printf(\n);}if((y==4)||(y==6)||(y==9)||(y==11))//30天的情况(4、6、9、11月){printf(%d月SunMonTueWedThuFriSat\n,y);printf();week=weak(n,y);for(i=0;iweek;i++)//第一行{printf();}bz1=1;for(i=0;i(7-week);i++){if(bz110){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第二行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第三行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第四行for(i=0;i7;i++){if(bz110){printf(%d,bz1);}if(bz1=10){printf(%d,bz1);}bz1=bz1+1;}printf(\n);printf();//第五行for(i=0;i7;i++){if(bz1=30){printf(%d,bz1);}if(bz130){printf();}bz1=bz1+1;}printf(\n);printf();//第六行for(i=0;i7;i++){if(bz1=30){printf(%d,bz1);}if(bz130){printf();}bz1=bz1+1;}printf(\n);}return0;}intday(intx){intn,y,y1,t,week;//n为年,y为yue,y1位计算y的临时变量,t为天,week为周,p为距离今天天数n=x/1000
本文标题:C语言万年历代码
链接地址:https://www.777doc.com/doc-2908778 .html