#include<stdio.h> #include<string.h> #include<time.h> //#include<conio.h> #include<stdlib.h> #include<windows.h> int isleapyear(int year) //判断该年是 闰年 还是 平年 { if((year%4==0&&year%100!=0) || (year%400==0) ) //判断该年是 闰年 return 1; else return 0; } int firstdayofyear(int year) //一年中的第一天是星期几 { return (year+(year-1)/4+(year-1)/400-(year-1)/100)%7; } void main() { char *monthname[13]={" ","一月份","二月份","三月份","四月份","五月份","六月份","七月份","八月份","九月份","十月份","十一月份","十二月份"}; int numday_month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //一个月的总天数 按平年来算 平年的二月是28天,闰年的二月是29天 int firstday_month[13]; // 存放每个月的第一天是星期几 int workarray[13]; int year; char cha; int k,m,n; int i,j,x,y; char p[20],ch; char temp[20]; srand(time(0)); //随便产生一个数 for(i=0;i<3;i++) { system("cls"); j=0; x=rand()%10000+1000; //产生的是一个大于1000的数 printf("*万年历系统*/n/n/n/n"); printf(" 验证码:%d/n",x); printf("/n/n 请输入验证码(还有%d次机会):",3-i); while(j<20&&(ch=getch())!='/r') { p[j++]=ch; putchar('*'); } p[j]='/0'; itoa(x,temp,10); //把X数 按十进制数转换为字符串 存储在temp[20]中 if(strcmp(p,temp)==0) { goto good; } //else //printf("/n重新输入"); } if(i>=3) { printf("/n/n/n 输入次数超过限制,退出系统!/n/n"); exit(0); } good:for(y=0;y<3;y++) //作为缓冲区 { system("cls"); printf("/n/n/n/n/n/n 请稍后"); Sleep(1000); printf("."); Sleep(1000); printf("."); Sleep(1000); printf("."); } do { system("cls"); //清屏效果 printf("/n"); printf("/n"); printf(" 欢 迎 进 入 万 年 历 查 询 系 统/n"); printf("/n"); printf(" 请输入待查询的年份:"); scanf("%d",&year); if(isleapyear(year)) //如果是闰年那么第二个月的总天数是29天 numday_month[2]=29; firstday_month[1]=firstdayofyear(year); //第一个月的第一天 也就是第一年的第一天 for(k=2;k<=12;k++) //注意这时 k=2 firstday_month[k]=(firstday_month[k-1]+numday_month[k-1])%7; //第二个月的第一天=(前一个月的第一天是星期几+前一个月的总天数)%7 for(k=1;k<=12;k++) workarray[k]=-firstday_month[k]; //注意 printf("%34s"," "); printf("year %d/n",year); for(k=1;k<=12;k++) //一年有12个月 { printf("/n"); printf("%32s/n/n",monthname[k]); printf("星期日/t星期一/t星期二/t星期三/t星期四/t星期五/t星期六/n"); for(m=1;m<=6;m++) //一个月最多有6行 { for(n=1;n<=7;n++) //一个星期有7天 { workarray[k]++; if(workarray[k]>0&&workarray[k]<=numday_month[k]) printf("%d/t",workarray[k]); else printf("/t"); } printf("/n"); } system("pause"); } printf("/n是否要继续请按Y/y,按其它键退出系统:"); scanf(" %c",&cha); //注意%c前面有个空格 因为之前按了回车键取代了一个位置 }while(cha=='Y'||cha=='y'); }
posted on 2011-05-17 16:10 android开发实例 阅读(408) 评论(0) 编辑 收藏 举报