C语言万年历(代码 说明)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
days = days + getMonthDays(year,i); } //从公元 1 年 days = days + day; return days%7; } //按日历的格式打印 year 年 month 月的日历 void printCalendar(int year,int month){ const char *week[] = {"日","一","二","三","四","五","六"}; int i;int row = 0; for(i=0;i<7;i++){
printf("%s\t",week[i]); } printf("\n"); //判断 year 年 month 月 1 日时星期几 for(i=0;i<isWeek(year,month,1);i++){
printf("\t"); } for(i=0;i<getMonthDays(year,month);i++){
/*本程序在 Microsoft Visual Studio 2010 旗舰版中测试通过*/ #include "stdio.h" #include "stdlib.h" #include "time.h" #include "conio.h" #define KEYUP 72//宏定义键盘的键值(↑) #define KEYDOWN 80//宏定义键盘的键值(↓) #define KEYLEFT 75//宏定义键盘的键值(←) #define KEYRIGHT 77//宏定义键盘的键值(→) //函数声明部分 const int isLeap(int year); const int getMonthDays(int year,int month); const int yearDays(int year); void printCalendar(int year,int month);
return 1; } else{
return 0; } } /*计算 year 年的 month 月是多少天 *返回值:整型,天数 */ const int getMonthDays(int year,int month){ switch(month){ case 1: case 3:
case 5: case 7: case 8: case 10: case 12:
case KEYDOWN: year--; breBiblioteka Baiduk;
case KEYLEFT: month--; if(month < 1){ month = 12; } break;
case KEYRIGHT: month++; if(month > 12){ month = 1; } break;
} } } //判断 year 是否是润年 返回 1 为闰年 const int isLeap(int year){ if(year%4==0&&year%100!=0||year%400==0){
void main(){ int year,month; int action = 0; //获取本地当前的年份和月份 time_t timep; struct tm *p; time(&timep); p = localtime(&timep); year = p->tm_year+1900;//获取本地当前的年份 month = p->tm_mon + 1;//获取本地当前的月份 while(1){ printf("\t\t %d 年%d 月\n",year,month); printCalendar(year,month); action = getch(); system("cls"); switch(action){ case KEYUP: year++; break;
*返回值:0,1,2,3,4,5,6 */ const int isWeek(int year,int month,int day){
int days = 0; int i; //计算前 year 年有多少天 for(i=1;i<year;i++){
days = days + yearDays(i); } //计算 year 年的前 month 个月有多少天 for(i=1;i<month;i++){
CreateDBW 制作 2012 年 12 月 7 日
printf("%d\t",i+1); //如果是星期六就换行打印日期 if(isWeek(year,month,i+1) == 6){
row ++; if(row == 2){
printf(" ↑"); } if(row == 3){
printf("← →"); } if(row == 4){
printf(" ↓"); } printf("\n\n"); } } printf("\n"); }
return 31; break; case 4: case 6: case 9: case 11: return 30; break; case 2: if(isLeap(year)){
return 29; }else{
return 28; } break; default: return 0; break; } } //计算 year 年的天数 const int yearDays(int year){ if(isLeap(year)){ return 366; }else{ return 365; } } /*判断 year 年 month 月 day 天时星期几
相关文档
最新文档