实现效果如图:

大概分以下几个点:

代码如下:

#include<stdio.h>
int Leap_year[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31 };
int Com_year[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char Week[7][5] = { "一","二","三","四","五","六","日" };
int year, month, day;
//用户输入日期
int User_Scanf()
{printf("请输入年-月-日:");while (scanf("%d-%d-%d", &year, &month, &day) != EOF){//是否在有效范围内检查if (year <= 0 || year >= 10000 || month < 0 || month >= 13 || day < 0 || day >= 31){printf("Error!\n");continue;}return 0;}
}
//打印星期
void Print_Week()
{printf("********************************************************\n");printf("\t\t\t万年历\t\t\t\n");for (int i = 0; i < 7; i++){printf("%s\t", Week[i]);}printf("\n");
}
//判断闰/平年
int is_Leap_Com(int year)
{if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){return 1;//闰年}elsereturn 0;//平年
}
//计算天数
int Count_Day(int year,int month,int day,int Leap_year[],int Com_year[])
{int sum = 0;//计算年天数if (is_Leap_Com(year) == 1){sum += 366;//闰年}elsesum += 365;//平年//计算月天数if (is_Leap_Com(year) == 1){for (int i = 1; i <=month; i++){sum += Leap_year[i];//闰月}}else{for (int i = 1; i <=month; i++){sum += Com_year[i];//平月}}return sum;
}
//打印日历
void Print_Day(int num, int year, int month)
{int result = 0, temp = 0;result = num % 7;//打印空格for (int i = 0; i < result; i++){printf("\t");}temp = 7 - result;//打印除空格外的日历if (is_Leap_Com(year) == 1){for (int i = 1; i <=Leap_year[month]; i++){printf("%d\t", i);if (i == temp || (i - temp) % 7 == 0)//判断是否换行printf("\n");}}else{for (int i = 1; i <=Com_year[month]; i++){printf("%d\t", i);if (i == temp || (i - temp) % 7 == 0)printf("\n");}}printf("\n");printf("********************************************************\n");
}
int main()
{User_Scanf();//用户输入日期Print_Week();//打印星期int num=Count_Day(year,month,day, Leap_year, Com_year);计算天数Print_Day(num,year, month);//打印日历return 0;
}

C语言——万年历打印(详细易懂)相关推荐

  1. Java基础-->一篇讲全Java常用类(详细易懂,建议收藏)

    Java基础–>一篇讲全Java常用类(详细易懂,建议收藏) 文章目录 Java基础-->一篇讲全Java常用类(详细易懂,建议收藏) 1.字符串相关的类 String类 概述 创建Str ...

  2. c语言万年历查询程序代码,C语言 万年历程序(示例代码)

    C语言 万年历程序 原代码:[email protected]:~/c++$ cat 123.c #include #define Mon   1 #define Tues  2 #define We ...

  3. c语言万年历大作业报告,C语言万年历设计报告

    <C语言万年历设计报告>由会员分享,可在线阅读,更多相关<C语言万年历设计报告(14页珍藏版)>请在人人文库网上搜索. 1.C 语言课程 设计报告 题目:编写万年历系统编写万年 ...

  4. c语言万年历并计算是一年中第几天

    c语言实现万年历 万年历打印是学习c语言路上的一次小小试炼,这也是经典练习例程本文实现的万年历包含的内容和功能:1. 判断日期输入是否正确2. 判断某天是星期几(基姆拉尔森计算公式)3. 判断某天是一 ...

  5. C语言 万年历 C语言 万年历

    C语言 万年历 C语言 万年历 ***************************************    2022    ********************************* ...

  6. 一步一步教你从零开始写C语言链表(超详细)

    STM32 HAL开发完全指南 写文章 一步一步教你从零开始写C语言链表(超详细) 杨源鑫 嵌入式系统工程师.物联网创业合伙人,业务经理兼产品经理 285 人赞同了该文章 为什么要学习链表? 链表主要 ...

  7. 用linux下的C语言编程万年历,C语言 万年历程序

    C语言 万年历程序 原代码:chunli@Linux:~/c++$ cat 123.c #include #define Mon   1 #define Tues  2 #define Wed   3 ...

  8. 最详细易懂的CRC-16校验原理(附源程序)

    from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html 最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码( ...

  9. I00029 C语言程序-打印九九乘法表

    这是小时候背的九九乘法表,是中文版,不是数字版,用C语言程序打印出来了. C语言程序如下: /* I00029 C语言程序-打印九九乘法表 */#include <stdio.h> #in ...

最新文章

  1. Nat. Mach. Intell. | 华科同济医学院剑桥联手推出新冠预测模型!
  2. 让PHP更快的提供文件下载 【转】
  3. 1-4 开发工具的选择
  4. 【Breadth-first Search 】785. Is Graph Bipartite?
  5. powershell自动化操作AD域、Exchange邮箱系列(10)—获取Exchange邮箱用户配额并导出excel
  6. Flask源码解析:从第一个版本开始阅读Flask源码
  7. Salesforce 社区可泄露业务敏感信息
  8. 《写给大家看的设计书》封面设计基本要求
  9. leetcode-337-打家劫舍三*
  10. java栈链_Java实现链栈
  11. java实战项目案例-附带视频教学
  12. C语言小程序:彩票号码生成器
  13. (7)公众号开发-自定义菜单
  14. Impala SQL语句 COMPUTE STATS
  15. 【Scratch-动作模块】碰到边缘就反弹和翻转方式
  16. bzoj 1026 //1026: [SCOI2009]windy数
  17. WMS仓库管理系统有哪些功能介绍
  18. python中的matplotlib绘图
  19. UVA11134_Fabled Rooks
  20. C/C++程序员学习路线

热门文章

  1. 第一行输出一个1,第二行输出2个2······第N行输出N个N
  2. 360root7.9,360超级root8011
  3. linux磁盘格式有哪几种,硬盘的格式都有哪些?哪一种比较好都有什么区别?
  4. 又一顶尖高校,布局深圳!
  5. HTML创意黑色蝙蝠侠小丑404页面源码
  6. linux命令 添加用户,Linux添加用户命令
  7. 当投票打榜的“饭圈女孩”杀入币圈
  8. react 元素延迟加载_React中的延迟加载路线
  9. java 实现图片拼接
  10. 我眼里的企业内耗9大怪状,兼说中国人的劣根性