用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");
}
}
#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");
}
}
相关文章推荐
- C语言实现的一个万年历小程序
- 用c语言编写一个万年历
- C语言写一个万年历
- C语言实现的一个简单的万年历
- C语言中计算一个数组长度
- 怎样把C语言数组中存放的四个十六进制数合并成一个十六进制数,并转换成十进制?
- 【c语言】数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字
- 用c语言实现一个自己的atof()函数
- C语言向有序数组中插入一个数使该数组仍保持有序
- C语言打造表白程序——教你做一个浪漫的程序员
- 一个C语言中的小知识点
- 4000 建立一个不能打开的文件(占坑)---C语言高级API调用
- c语言的一个简单回顾
- 一个例子说明C语言中代码块作用域、函数作用域、函数原型作用域、文件作用域的区别
- C语言构建一个简单链表
- CTCI系列--1.1 判断一个字符串中的字符是否唯一(C语言)
- 一个简单的计算C语言四则运算
- 用c语言实现求一个字符串长度的函数
- linux面试c语言编程----------把一个字符串倒序,如“abcd”倒序后变为“dcba”
- 万年历的C语言写法