您的位置:首页 > 编程语言 > C语言/C++

C语言 日历查询系统 成品

2011-05-17 16:10 134 查看
#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');
}












内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: