编写一万年历系统(2)

2018-11-28 18:52

k=(7-(day-n+6)%7)%7; //此月第一天是星期几 else if(day==1)

k=n; 流程图:

day>1 Y k=7-(day-n+6)%7 N k=n

4.打印输出本月当前月历:

printf(\for(o=0;o

printf(\ \for(o=k;o

{printf(\ if(o%7==6)

printf(\} 流程图 printf(\sun mon tue wen thu fri sat\\n\N Y o

printf(\ \o=o+1 printf(\,o-k+1) Y o%7==6 printf(\o=o+1 4 调试分析

1,在当天的系统时间(06年7月21号)运行后;

2,为了验证是否是日期跳到下个月是自动跳换的,我改了系统时间,设定为07年7月21号,运行结果如下:

3,由于上面两次试运行都成功了,所以我把系统时间设定为过去的06年6月,考察看是否还能正常运行:

可以看到,几次试运行都是成立的,而且根据设计,这个万年历可以显示的月历可以到公元元年!

当然调试过程中也遇到了一些问题,如:

发现这是k被赋予了7的结果,所以我就在k=7-(day-n+6)%7;的基础上做了修改:k=(7-(day-n+6)%7)%7; 所以遇到的问题就解决了!

还有一个想法就是定义了days是整型,理论上可能导致超出整型的范围,所以应该可以考虑使用long型,不过必要性不是很大所以忽略.

5 总 结

基本完成了设计的要求内容(模仿显示生活中的挂历,当前页以系统当前日期的月份为准显示当前月的没一天(显示出日期对应的星期几),当系统日期变到下一月时,系统自动翻页到下一月),不过显示页面有待改进,可以更加人性化一些。还有的问题就是现在的是获取系统时间自动换页显示日历,不过没有实现人工换页的功能,如果实现的话,应该要定义变量year,month,day;为可以直接赋值的,那样的话便可以随意查询任意一个月的日历了!

在本次课程设计中,我体会到了很多C语言学习中的心得,我深深体会到查找资料的重要性,因为本次设计需要比较全面的C语言知识,需要从书本查找大量的帮助资料,所以很考大家自我学习提高的能力。

在此设计前,我都不敢想象自己可以用学到的C语言做出这样的程序出来,总觉得自信不够,但通过这次设计,经过了几夜鏖战最后把程序运行出来时,内心的喜悦是难以言表的。这次的成功不仅给了我学号C语言用好C语言的动力,也给了我更加深入的学习C语言的动力,C语言确实是一门很实际的计算机语言!

通过这次设计也使自己对C语言的掌握提高到了一个新的水平,能够利用C语言编写出一个实用的程序,很大程度提高了程序综合设计能力、分析能力和编程能力,以及自我动手能力等等。这对以后学习和工作中遇到问题也是很有帮助的,毕竟我曾经战胜过它!

7.附录

#include #include int main(void)

{int year,month,day; int days=0,i,j,n,m,k,o;

int m1[]={31,28,31,30,31,30,31,31,30,31,30,31}; int m2[]={31,29,31,30,31,30,31,31,30,31,30,31};

time_t today; struct tm *p;

time(&today);

p=localtime(&today); //转换成本地时间的日期

year=p->tm_year+1900; month=p->tm_mon+1; day=p->tm_mday;

printf(\ M-d\\n\ //打印出年月

if(year>=0) //由于已知公元元年1月1日为星期一,所以以改日为基准计算

for(i=0;i

{ if((i%4==0 && i0!=0)||i@0==0) //判断是否为闰年

days=days+366; else days=days+365; }

if((year%4==0 && year0!=0)||year@0==0) //判断是否为闰年

for(j=0;j

{days=days+m2[j];

m=m2[month]; //算出当月天数 }


编写一万年历系统(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:研究生综合英语下学期习题文档

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: