欢迎来到天天文库
浏览记录
ID:57578782
大小:34.66 KB
页数:6页
时间:2020-08-27
《桌面日历设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、桌面日历设计一、设计思路输入的年份判断从定义年到输入的年份中每个年份是否为闰年是否每年为366天每年为365天返回该年的天数1.图一输入的年月判断输入年是否为定义年是否总天数S=1总天数S为定义年到输入年的总天数把S加上该年一月到输入月份的天数,再加1判断输入的月份是否为闰年中的月份是否该月是否大于二月是否把S加上该年一月到输入月份的天数把S再加上该把S加上该年年一月到输入一月到输入月的月份的天数份的天数再加1总天数为S判断S的最后一天为星期几从这一天起依次输出输入月份的天数直到该月底为止1.图二#include
2、tdio.h>/*根据年份测试是否是闰年。参数:年份返回值:0—不是闰年,1—是闰年*/intisLeap(int);/*计算给定年份的元旦是星期几参数:年份返回值:星期几注:该函数可以改进成为——计算给定的年月的第一天是星期几*/intFirstDay(int,int);/*计算给定某年某月的天数参数:年份,月份返回值:天数(28~31)*/intLenOfMonth(int,int);main(){shorti,flagInput=0;//i--循环变量,flagInput--输入标志intyear,month;
3、//输入数据。year--年份,month--月份//中间变量。day--日子,weekday--每月第一天是星期几,daysOfMonth--每月的天数intday,weekday,daysOfMonth;/*————改进代码——开始*/do{/*检验用户的输入是否合法*/if(flagInput==1)printf("——————————Error!您输入的年份和月份有误,请重新输入!!");/*————改进代码——结束*///接收年份printf("请输入年份(>=1900):");scanf(
4、"%d",&year);/*————改进代码——开始*///接收月份printf("请输入月份(1~12):");scanf("%d",&month);flagInput=1;//用户输入后,标志=1}/*如果输入的年份和月份非法,则重新循环接收*/while(!(year>=1900&&month>0&&month<=12));/*————改进代码——结束*/weekday=FirstDay(year,month);//计算每月第一天是星期几//for(month=1;month<=12;month++)//如果启
5、用改进代码,则将本行注释起来{/*显示日历的标题*/printf("年份:%6dt",year);printf("月份:%6d",month);//改进代码/*显示日历的抬头*/printf("---------------------------------------");printf("SUNMONTUEWEDTHUFRISAT");printf("---------------------------------------");for(i=0;i6、据每月第一天是星期几,来决定输出每月前面的空格printf("%-6c",'');daysOfMonth=LenOfMonth(year,month);//计算出每月的天数for(day=1;day<=daysOfMonth;day++)//根据每月的天数,输出日子{printf("%-6d",day);weekday=(weekday+1)%7;//计算出当前是星期几,决定判断是否回车if(weekday==0)//如果到了周末,则换行printf("");}//结束本月日历的输出printf("");pr7、intf("---------------------------------------");}return0;//返回操作系统}/*根据年份测试是否是闰年。参数:年份;返回值:0—不是闰年,1—是闰年*/intisLeap(intyear){intleap=0;//leap用来表示是否是闰年if((year%4==0&&year%100!=0)8、9、(year%400==0))//判断是否闰年leap=1;returnleap;//返回测试结果}/*计算给定某年某月的天数参数:年份,月份返回值:天数(28~3110、)*/intLenOfMonth(intyear,intmonth){intdayNumber;//计算天数//如果是小月,则30天if(month==411、12、month==613、14、month==915、16、month==11)dayNumber=30;//如果是大月和闰月elseif(month==2)//如果是2月,则要先判断是否是闰年if(isLe
6、据每月第一天是星期几,来决定输出每月前面的空格printf("%-6c",'');daysOfMonth=LenOfMonth(year,month);//计算出每月的天数for(day=1;day<=daysOfMonth;day++)//根据每月的天数,输出日子{printf("%-6d",day);weekday=(weekday+1)%7;//计算出当前是星期几,决定判断是否回车if(weekday==0)//如果到了周末,则换行printf("");}//结束本月日历的输出printf("");pr
7、intf("---------------------------------------");}return0;//返回操作系统}/*根据年份测试是否是闰年。参数:年份;返回值:0—不是闰年,1—是闰年*/intisLeap(intyear){intleap=0;//leap用来表示是否是闰年if((year%4==0&&year%100!=0)
8、
9、(year%400==0))//判断是否闰年leap=1;returnleap;//返回测试结果}/*计算给定某年某月的天数参数:年份,月份返回值:天数(28~31
10、)*/intLenOfMonth(intyear,intmonth){intdayNumber;//计算天数//如果是小月,则30天if(month==4
11、
12、month==6
13、
14、month==9
15、
16、month==11)dayNumber=30;//如果是大月和闰月elseif(month==2)//如果是2月,则要先判断是否是闰年if(isLe
此文档下载收益归作者所有