加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用C语言写的一个万年历

发布时间:2020-12-16 07:47:43 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 #includestdio.h#includemath.hint input();void re_year(int year);void output(int year,int leap,int dis_day,int para);void main(){ int year,le

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

#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,&para);
  output( year,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 para)
{ 
 int i,j,k,m=0;
 int leap_array[2][13]={{0,31,28,30,31},{0,29,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月tn",i);
  printf("%s %s %s %s %s %s %sn","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("%3dn",j);
   }
   else
    printf("%3d ",j);
   m++;

  }
  m=(m-1)%7;
  printf("n");
 }
 
}

 

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读