016.编制万年历

简介: 016.编制万年历
#include "stdio.h"
long int f(int year,int month)
{/*f(年,月)=年-1,如月<3;否则,f(年,月)=年*/
  if(month<3) return year-1;
  else return year;
}
long int g(int month)
{/*g(月)=月+13,如月<3;否则,g(月)=月+1*/
  if(month<3) return month+13;
  else return month+1;
}
long int n(int year,int month,int day)
{
  /*N=1461*f(年、月)/4+153*g(月)/5+日*/
  return 1461L*f(year,month)/4+153L*g(month)/5+day;
}
int w(int year,int month,int day)
{
  /*w=(N-621049)%7(0<=w<7)*/
  return(int)((n(year,month,day)%7-621049L%7+7)%7);
}
int date[12][6][7];
int day_tbl[ ][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
        {31,29,31,30,31,30,31,31,30,31,30,31}};
main()
{int sw,leap,i,j,k,wd,day;
 int year;/*年*/
 char title[]="SUN MON TUE WED THU FRI SAT";
clrscr();
printf("Please input the year whose calendar you want to know: ");/*输入年*/
scanf("%d%*c",&year);/*输入年份值和掠过值后的回车*/
sw=w(year,1,1);
leap=year%4==0&&year%100||year%400==0;/*判闰年*/
for(i=0;i<12;i++)
  for(j=0;j<6;j++)
    for(k=0;k<7;k++)
      date[i][j][k]=0;/*日期表置0*/
for(i=0;i<12;i++)/*一年十二个月*/
  for(wd=0,day=1;day<=day_tbl[leap][i];day++)
  {/*将第i+1月的日期填入日期表*/
   date[i][wd][sw]=day;
  sw=++sw%7;/*每星期七天,以0至6计数*/
  if(sw==0) wd++;/*日期表每七天一行,星期天开始新的一行*/
  }
  printf("\n|==================The Calendar of Year %d =====================|\n|",year);
for(i=0;i<6;i++)
{/*先测算第i+1月和第i+7月的最大星期数*/
  for(wd=0,k=0;k<7;k++)/*日期表的第六行有日期,则wd!=0*/
    wd+=date[i][5][k]+date[i+6][5][k];
  wd=wd?6:5;
  printf("%2d  %s  %2d  %s |\n|",i+1,title,i+7,title);
  for(j=0;j<wd;j++)
  {
    printf("   ");/*输出四个空白符*/
    /*左栏为第i+1月,右栏为第i+7月*/
    for(k=0;k<7;k++)
      if(date[i][j][k])
        printf("%4d",date[i][j][k]);
      else printf("    ");
    printf("     ");/*输出十个空白符*/
    for(k=0;k<7;k++)
      if(date[i+6][j][k])
        printf("%4d",date[i+6][j][k]);
      else printf("    ");
    printf(" |\n|");
  }
  /*scanf("%*c");/*键入回车输出下一个月的日历*/
}
puts("=================================================================|");
puts("\n Press any key to quit...");
getch();
}
相关文章
|
机器学习/深度学习 存储 人工智能
NLP教程(7) - 问答系统
本文介绍 NLP 中的问答系统(Question Answering),包括 NLP 中的问答系统场景、动态记忆网络(Dynamic Memory Networks)、问答(QA)、对话、MemNN、DCN、VQA等。
1435 1
NLP教程(7) -  问答系统
|
9月前
|
NoSQL Java 测试技术
机房迁移,不同 Pod 副本请求耗时会相差数倍
客户机房迁移过程中,发现不同 Pod 副本耗时前后相差 5 倍,本文介绍如何通过 ARMS 代码热点功能进行快速定位。
425 242
|
12月前
|
人工智能 IDE 测试技术
使用通义灵码提升Python开发效率:从熟悉代码到实现需求的全流程体验
作为一名Python开发者,我最近开始使用通义灵码作为开发辅助工具。它显著提高了我的工作效率,特别是在理解和修改复杂代码逻辑方面。通过AI编码助手,我能够在短时间内快速上手新项目,实现新需求,并进行代码优化,整体效率提升了60%以上。通义灵码不仅加快了代码生成速度,还增强了代码的健壮性和稳定性。
|
11月前
|
Python
SciPy 教程 之 SciPy 模块列表 14
SciPy 教程之 SciPy 模块列表 14:单位类型。常量模块包含多种单位,如公制单位、质量单位、时间单位、长度单位等。能量单位以焦耳表示,符号为 J。示例代码展示了如何使用 `scipy.constants` 模块获取绝对零度和华氏度转换值。
61 0
|
XML Java 数据库
SpringIOC操作Bean管理--最终章
SpringIOC操作Bean管理--最终章
151 0
|
Java Go
golang垃圾回收
Go语言1.3前采用标记清除的垃圾回收,1.5后引入三色标记法(白、灰、黑)解决长时间停止问题。三色标记通过强弱不变式避免对象丢失,保证垃圾回收准确性。过程包括从根节点遍历将对象从白转灰,再转黑,最终回收白色对象。为防止对象丢失,使用插入和删除写屏障,但插入屏障可能导致短暂暂停,结束时仍需STW扫描栈。删除屏障保护灰色到白色对象的路径不断。
92 1
|
小程序 Linux 开发工具
手把手教你如何在Linux下写进度条小程序(附源码)
手把手教你如何在Linux下写进度条小程序(附源码)
|
编解码 小程序 C#
python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现(一)
根据网上相关资料,使用python实现邮箱附件批量下载,然后打包生成exe后,虽是脱离了python环境便于她使用,可对于她们这些没有接触编程的人员来说,cmd命令行调用exe的操作不便于理解和操作。为此,界面化程序开发选择了C#,从而实现了C#调用python开发的exe来完成邮箱附件批量下载功能。
573 0
python实现电子邮件附件指定时间段,批量下载以及C#小程序集成实现(一)
|
API Python
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)
为什么要用 ax ,而不是 plt 呢? 因为在绘制子图过程中,对于每一个子图的不同设置,ax 可以直接实现对于单个子图的设定,因此掌握必要的 ax 设置命令尤为重要!
python matplotlib.axes相关属性设置(绘图方式、坐标轴、坐标刻度、文本等)
|
存储 SQL 缓存
1024程序员节|【MySQL从入门到精通】【高级篇】(二十七)外连接和内连接如何进行查询优化呢?join的原理了解一波
【MySQL从入门到精通】【高级篇】(二十六)建了索引就能用么?我看未必。来看看几种索引失效的情况吧 上篇文章我们将来学习索引失效的几种情况。有时候并不是说加了索引,就一定能用上索引,还是要具体情况具体分析。本文将介绍一下MySQL优化器如何对外连接和内连接进行查询优化的以及介绍Join语句的底层原理。
257 0
1024程序员节|【MySQL从入门到精通】【高级篇】(二十七)外连接和内连接如何进行查询优化呢?join的原理了解一波