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

用C语言写的一个万年历

2012-06-15 19:51 218 查看
#include<stdio.h>

#include<math.h>

int input();

void re_year(int year);

void output(int year,int leap,int dis_day,int para);

void main()

{

int year,leap,dis_day,para;

while(1)

{

year=input();

re_year(year, &leap,&dis_day,¶);

output( year, leap, dis_day, para);

}

}

int input()

{

int year;

printf("Please input the year you want to konw:");

scanf("%d",&year);

return year;

}

void re_year(int year,int *leap,int *dis_day,int *parameter)

{

int i,distance;

*dis_day=0;

distance=year-2012; //判断距离2012年的年数

*leap=(year%4)==0&&(year%100!=0)||year%400==0; //判断是闰年还是平年,闰年返回1,平年返回0

for(i=1;i<=abs(distance);i++) //计算输入的年与2012年之间的差值

{

if(i%4==0)

{

*dis_day+=366;

}

else

*dis_day+=365;

}

if(distance<0) //判断是在2012年之前还是之后

*parameter=-1;

else

*parameter=1;

}

void output(int year,int leap,int dis_day,int para)

{

int i,j,k,m=0;

int leap_array[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},

{0,31,29,31,30,31,30,31,31,30,31,30,31}};

int day;

int week_day; //判断是星期几

day=dis_day%7;

if(para==1&&year!=2012) //para为判断是2012年之前还是之后

week_day=day+1;

else if(para==-1&&year!=2012)

week_day=-day+7;

else if(year==2012)

week_day=day;

m=week_day;

for(i=1;i<13;i++)

{

printf("\t%d月\t\n",i);

printf("%s %s %s %s %s %s %s\n","Sun","Mon","Tus","Wes","Ths","Fri","Sat");

if(m==0)

m++;

else if(m!=7)

{

for(k=1;k<=m;k++)

printf(" ");

m++;

}

for(j=1;j<=leap_array[leap][i];j++)

{

if(m%7==0)

{

printf("%3d\n",j);

}

else

printf("%3d ",j);

m++;

}

m=(m-1)%7;

printf("\n");

}

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