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; }}