- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[桌面日历设计
桌面日历设计
设计思路
输入的年份 判断从定义年到输入的年份中
每个年份是否为闰年
是 否
每年为366天 每年为365天 返回该年的天数
图一
输入的年月 判断输入年是否为定义年
是 否 总天数S=1 总天数S为定义年到输入年的总天数 把S加上该年一月到输入月份的天数,再加1 判断输入的月份是否
为闰年中的月份
是 否 该月是否大于二月
是 否 把S加上该 年一月
到输入月份的天数 把S再加上该 把S加上该年年一月到输入 一月到输入月
的月份的天数 份的天数
再加1 总天数为S 判断S的最后一天为星期几 从这一天起依次输出输入月份的天数直到该月底为止 图二
#include <stdio.h>
/*根据年份测试是否是闰年。
参数:年份
返回值:0—不是闰年,1—是闰年*/
int isLeap(int);
/*计算给定年份的元旦是星期几
参数:年份
返回值:星期几
注:该函数可以改进成为——计算给定的年月的第一天是星期几*/
int FirstDay(int, int);
/*计算给定某年某月的天数
参数:年份,月份
返回值:天数(28~31)*/
int LenOfMonth(int, int);
main()
{
short i, flagInput=0; //i--循环变量,flagInput--输入标志
int year, month; //输入数据。year--年份,month--月份
//中间变量。day--日子,weekday--每月第一天是星期几,daysOfMonth--每月的天数
int day, weekday, daysOfMonth;
/*————改进代码——开始*/
do{ /*检验用户的输入是否合法*/
if(flagInput==1)
printf("\n——————————\nError! 您输入的年份和月份有误,请重新输入!!\n\n");
/*————改进代码——结束*/
//接收年份
printf("请输入年份(>=1900):");
scanf("%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++) //如果启用改进代码,则将本行注释起来
{
/*显示日历的标题*/
printf("\n\n年份:%6d\t", year);
printf("月份:%6d\n\n", month); //改进代码
/*显示日历的抬头*/
printf("---------------------------------------\n");
printf("SUN MON TUE WED THU FRI SAT\n");
printf("---------------------------------------\n");
for(i=0;i<weekday;i++) //根据每月第一天是星期几,来决定输出每月前面的空格
printf("%-6c",' ');
daysOfM
文档评论(0)