文档介绍:桌面日历设计一、设计思路 1. 图一输入的年月判断输入年是否为定义年是否总天数 S=1总天数 S为定义年到输入年的总天数把S加上该年一月到输入月份的天数, 再加 1 判断输入的月份是否为闰年中的月份是否该月是否大于二月是否把S加上该年一月到输入月份的天数把S 再加上该把S 加上该年年一月到输入一月到输入月的月份的天数份的天数再加 1总天数为 S判断 S的最后一天为星期几输入的年份判断从定义年到输入的年份中每个年份是否为闰年是否每年为 366 天每年为 365 天返回该年的天数从这一天起依次输出输入月份的天数直到该月底为止 #include <> /* 根据年份测试是否是闰年。参数:年份返回值: 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("--------------------------