1、二应用程序要求、目的主题:目的:实现对年月的查询三应用程序简介 (1)基本结构: 整个程序有cls_screen(清屏)、judgement(判断是否为闰年)、show_week(记录周几)、print_year(查询某年)、print_year_month(查询某年某月)等自定义函数,程序中涉及到switch语句、for语句、if语句等和多次函数调用语句,开头定义了day_of_month数组,主要目的是将12个月每个月有多少天依次排出,在后面又用if语句判断二月的天数是28还是29。在主函数中运用while语言与switch语句的嵌套,是程序拥有了循环的功能。用fflush(stdin);
2、语句清除输入缓存,使程序在使用过程中不会太过眼花缭乱。 万年历的编程,需要两个方面的讨论和研究,一是要在用户输入年份的时候,判断该年是否为闰年,而对于闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。所以会改变day_of_month数组中的二月份的数值。二是在用户输入年月份的时候,判断该年该月的第一天是周几,从来好排列。而对于判断周几,需要运用公式:w=(y+y/4+c/4-2c+26(m+1)/10+d-1)%7并用if语句使用判断。通过这两个方面的讨论和实现,才能合理的编程出万年历的基本程序代码。(2)源程序代码:#include#include ti
3、me.hmath.hwindows.hint year , month , day ;int day_of_month12 = 31,28,31,30,31,30,31,31,30,31,30,31;int current_year,current_month,current_day;void cls_screen()printf(请按任意键返回!n);getchar();system(clsint judgement (int y)if (y % 400 = 0 | (y % 100 !=0 & y %4 =0)return 1 ;else return 0 ;int show_week (
4、int year , int month , int day)/*公式:w=(y+y/4+c/4-2c+26(m+1)/10+d-1)%7*/int w ,k;int year_last=year %100,c=year/100 , m = month;if (month=1 )year_last-=1 ;else if (month=2)year_last-=1;w = (year_last + year_last/4 + c/4 - 2*c +26*(m+1)/10+day-1);if (w0)k=(w%7+7)%7;else k=w%7;return k ;void print_year
5、 (int year)int i , k ,x ,first_week;printf (请输入想要查询的年份(格式如2012):scanf (%d,&year);=%d年=n,year);if (judgement(year)day_of_month1=29;else day_of_month1=28;for (i=1 ; i 13 ; i+)first_week = show_week(year,i,1);=%d月日历如下=n,i);SuntMontTuetWedtThutFritSatnfor (x=1;x=first_week;x+)tif (x%7=0) printf (for (k=
6、1;k=day_of_monthi-1;k+)%dt,k);x+;void print_year_month ()int k ,x ,first_week;请输入想要查询的年月(格式如2012 12):do%d %dyear,&month);if (month12)您输入的月份有误哦请输入正确的月份nwhile(1month|month12);=%d年%d月=n,year,month);first_week = show_week(year,month,1);=day_of_monthmonth-1;void main ()int choice,year,month,day,flag=1,op
7、tion;char c , k,ch;while(1)=欢迎来到XXX的万年历=n请选择:* * * * * * * * 1.查找某一年的年历 * * * * * * * *n* * * * * * * * 2.查找某一月的月历 * * * * * * * *n* * * * * * * * 0.退出 * * * * * * * *n=n请输入您的选择: scanf(option);switch(option)case 1:print_year(year);cls_screen();do you want to continue?(Y/N)fflush(stdin);%cch);if(ch=N|ch=n)break;case 2:print_year_month ();case 0::程序的运行环境本程序运行环境为 选择“1”并查询2012年的日历。显示2012年的日历:可以按任意键返回。出现“是否继续的提示语”按y可继续查询某年的日历。按n可返回开始时的画面,再继续选择。选择“2”,查询2012年9月的月历。 此程序开始有提示语问候,使用户使用时亲切便捷,并实现了循环的过程,可以无限循环的查询你想知道年份月份的日历,在循环的过程中加有清屏的效果。 在编译程序时,对蔡勒公式的不熟悉,导致程序在年月之间的错误,但在之后的调试中逐步掌握了这个公式,并解决了这一系列的问题。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1