c语言作业年历显示讲解6,c语言作业时钟、闹钟和万年历程序,哪位活神仙救救我这个枯木吧!!不然要挂科了,感谢啦!...

#includeint 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');

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值