c语言基础代码编写的简单的万年历程序

c语言基础代码编写的简单的万年历程序
c语言基础代码编写的简单的万年历程序

#include

void print(int x,int y); //打印程序x表示这个月的总天数y表示这个月的1号的星期int month_day(int x,int y); //计算该月的天数x表示年份y表示月份

int run(int y); //判断闰年y表示年份

int month_cha(int x,int y); //每月一号的星期x表示年份y表示月份

int year_cha(int x); //每年的一月一号的星期x表示年份

void main()

{

int year,month,day,cha;

char key='y';

while(key=='y')

{

printf("请输入年月:");

scanf("%d%d",&year,&month);

day=month_day(year,month);

cha=month_cha(year,month);

print(day,cha);

printf("是否继续输入(y/n):");

scanf("%c",&key);

scanf("%c",&key);

}

}

void print(int x,int y)

{

int i,j;

printf("Sun Mon Tue Wed Thu Fri Sat\n");

for(i=0;i

printf("\t");

for(j=1;j<=x;j++,i++)

{

printf("%d\t",j);

if(i%7==6)

{

printf("\n");

}

}

printf("\n");

}

int run(int y)

{

int r;

if(y%4!=0)

r=0;

else if((y%100==0)&&(y%400)!=0)

r=0;

else

r=1;

return r;

}

int month_day(int x,int y)

{

int day;

switch(y)

{

case 1: day=31; break;

case 2: day=28+run(x); break;

case 3: day=31; break;

case 4: day=30; break;

case 5: day=31; break;

case 6: day=30; break;

case 7: day=31; break;

case 8: day=31; break;

case 9: day=30; break;

case 10: day=31; break;

case 11: day=30; break;

case 12: day=31; break;

}

return day;

}

int month_cha(int x,int y)

{

int day;

switch(y)

{

case 1: day=0; break;

case 2: day=3; break;

case 3: day=3+run(x); break;

case 4: day=6+run(x); break;

case 5: day=1+run(x); break;

case 6: day=4+run(x); break;

case 7: day=6+run(x); break;

case 8: day=2+run(x); break;

case 9: day=5+run(x); break;

case 10: day=0+run(x); break;

case 11: day=3+run(x); break;

case 12: day=5+run(x); break;

}

day+=year_cha(x);

if(day<0)

{

day=7-(-day)%7;

}

if(day>6)

{

day=day%7;

}

return day;

}

int year_cha(int x)

{

int i,day=0;

if(x>2012)

for(i=2012;i

{

day+=run(i);

day++;

}

else if(x<2012)

for(i=x;i<2012;i++)

{

day=day-run(i);

day--;

}

else day=0;

printf("day=%d\n",day);

return day;

}}

相关主题
相关文档
最新文档