自 创 日 历 (在代码里有注释讲细节)

简介: 做日历主要是要确定好第一天是星期几,然后算间隔多少天,算出具体这一天是星期几,然后把我们想打印的打印出来,把每个月的第一天定位到该在的地方。
//预处理
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//构造一个二维数组,存放闰平年的月的天数。
int days_in_month[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} };
//13是为了第month列刚好对应第几列(数组行和列从0数起)
//判断年份是否为闰年,闰年返回1(真,二维数组第0行),平年返回0(假,二维数组第1行)
int judge_run(int year)
{
  return  ( year % 400 == 0 ) || (year % 100 != 0 && year % 4 == 0);
}
//判断某一天是星期几。(星期日返回7)
int judge_weekday(int year, int month, int day)
{
  int year1 = 1;  //公元1月1号是星期一。
  int jiange_year = year - year1, jiange_days = 0;
  int i;
  for (i = 0; i < jiange_year; i++)
  {
  if (judge_run(i + year1))
    jiange_days += 366;
  else
    jiange_days += 365;
  }
  for (i = 1; i < month; i++) 
  {
  jiange_days += days_in_month[judge_run(year)][i];
  }
  jiange_days += day - 1;//例如第一个月的第二天与第一天隔着一天
  return  year1 + jiange_days % 7;
}
//打印日历
void show(int year, int month)
{
  printf("  | 一  | 二  | 三  | 四  | 五  | 六  | 日  | \n");
  printf("----------------------------------------------\n");
  int n = judge_weekday(year, month, 1);
  int i;
//定位到星期几开始打印日期。
  for (i = 1; i < n; i++)
  {
  printf("      ");
  }
  printf("    ");
//在二维数组中拿到这个月有多少天然后打印
  for (i = 1; i <= days_in_month[judge_run(year)][month]; i++)
  {
  printf("%2d    ", i);
  if (judge_weekday(year, month, i) == 7)//到了星期日打印完后换行
    printf("\n\n    ");
  }
  printf("\n----------------------------------------------\n");
}
int main()
{
  int year = 0, month = 0;
  printf("请输入你要查询的年月份:>");
  scanf("%d%d",&year,&month);
  show(year, month);
  return 0;
}

       做日历主要是要确定好第一天是星期几,然后算间隔多少天,算出具体这一天是星期几,然后把我们想打印的打印出来,把每个月的第一天定位到该在的地方。


目录
相关文章
|
9月前
|
设计模式 算法 前端开发
有什么可以减少注释,但依然能让他人看得懂代码的方法吗?
有什么可以减少注释,但依然能让他人看得懂代码的方法吗?
69 0
|
4月前
|
自然语言处理 程序员 测试技术
通义灵码,解决程序员最讨厌的两件事:1、自己写注释;2、别人不写注释
通义灵码推出@workspace新功能,基于本地代码库的RAG技术,深度感知代码库。本文通过为openGauss开源项目贡献代码,展示了@workspace的功能,包括解释代码、生成单元测试、生成注释、生成优化建议等,帮助开发者快速理解项目架构和优化代码。最终,通过删除无效代码并提交合并请求,展示了该功能的实际应用效果。
109 0
通义灵码,解决程序员最讨厌的两件事:1、自己写注释;2、别人不写注释
|
8月前
|
机器学习/深度学习 算法 计算机视觉
完全让ChatGPT写一个风格迁移的例子,不改动任何代码
完全让ChatGPT写一个风格迁移的例子,不改动任何代码
74 1
|
9月前
|
算法 程序员 开发者
探寻代码世界中的独特注释
作为开发者在编程开发中,注释是我们编写的代码中不可或缺的一部分,尽管我们常常强调清晰的代码本身就是最好的文档,但注释依然在软件开发的全生命周期中发挥着不可替代的关键作用,扮演着关键的角色,帮助我们更好地理解和维护代码。而在代码注释的海洋中,有时我们会发现一些独特而富有创意的注释,它们既有幽默感,又蕴含着智慧,或让人会心一笑,或引发深思。有些注释展现了开发者的幽默和创造力,通过有趣的文字让我们在编码过程中轻松一笑;有些注释则引发了思考,激发了我们对更好解决方案的探索和思考;还有些注释融入了文化和历史元素,为代码增添了趣味和人文关怀。代码注释不仅仅是对代码功能的解释,更是程序员与读者之间的沟通桥梁
64 1
探寻代码世界中的独特注释
|
9月前
|
程序员 开发者
欢迎讨论--你见过哪些独特的代码注释
【5月更文挑战第11天】欢迎讨论--你见过哪些独特的代码注释
|
算法 定位技术
连连看核心算法与基本思想(附全部项目代码链接与代码详细注释)
连连看核心算法与基本思想(附全部项目代码链接与代码详细注释)
488 0
|
9月前
|
Java
注释之背后:代码的解释者与保护者
注释之背后:代码的解释者与保护者
47 0
|
缓存 算法 架构师
代码注释的艺术,优秀代码真的不需要注释吗?
注释并不会妨碍你写出优雅简洁的代码,它只是程序固有的一部分而已。我们不用过分在意我们的代码是否可以脱离注释,也不需要强调因为我们的代码符合什么原则,满足什么约定,所以代码是优秀的注释是冗余的。代码是一门艺术,并不会因为满足三规九条它就一定完美,因为艺术,是不可衡量的。
588 12
代码注释的艺术,优秀代码真的不需要注释吗?
|
前端开发
前端工作总结131-优化项目的代码显示名字
前端工作总结131-优化项目的代码显示名字
115 0
前端工作总结131-优化项目的代码显示名字
|
人工智能 芯片 Windows
画图细节不会改?那就用 AI 吧!
很多读者会在群里问一些绘图细节的问题,而对于这些问题,小编也不大会啊!实在没办法就用Adobe Illustator (AI) 来帮忙吧。今天就简单介绍下,如何安装和使用这个软件。
301 0
画图细节不会改?那就用 AI 吧!