前言:
想到写过就贴出来系列…
阳历万年历
代码:
//万年历
#include<stdio.h>
#include<windows.h>
void start()
{
int i;
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf("\t\t\t\t\t\t欢迎使用我的产品!");
for(i=0;i<6;i++)
{
sleep(1);
printf(".");
}
system("cls");
}
void printhead(int year,int month)
{
printf("欢迎使用\n");
printf("%d年%d月\n",year,month);
printf("一 二 三 四 五 六 日\n");
}
int countday(int year,int month,int cnt[])
{
int i,sum=0;
int icommon=365; //先计算年再计算月最后把天数加一
for(i=1900;i<year;i++)
{
sum+=icommon;
if((i%4==0&&i%100!=0)||i%400==0)
sum++;
}
for(i=0;i<month-1;i++)
sum+=cnt[i];
sum++;
return sum;
}
void printdate(int week,int month1)
{
int day[month1];
int i,j=1,cnt=1;
while(--week)
{
printf(" ");
cnt++;
}
for(i=0;i<month1;i++,j++)
{
printf("%-4d",j);
if((i+cnt)%7==0)
printf("\n");
}
}
int judge(int sum)
{
return sum%7;
}
void main()
{
int month,sum,week,month1; //week即星期几
int year;
int judge_end=1;
int cnt[12]={31,28,31,30,31,30,31,31,30,31,30,31};
start();
while(judge_end)
{
system("cls");
printf("请您输入要查询的年份与月份:");
scanf("%d %d",&year,&month);
printhead(year,month); //显示表头
sum=countday(year,month,cnt); //计算此月一号是从1900年开始的第多少天
week=judge(sum); //判断此月一号是星期几
if(week==0)
week=7;
month1=cnt[month-1];
printdate(week,month1);
printf("\n是否继续(是:1,否:0)\n");
scanf("%d",&judge_end);
}
}