C语言——万年历打印(详细易懂)
实现效果如图:
大概分以下几个点:
代码如下:
#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语言——万年历打印(详细易懂)相关推荐
- Java基础-->一篇讲全Java常用类(详细易懂,建议收藏)
Java基础–>一篇讲全Java常用类(详细易懂,建议收藏) 文章目录 Java基础-->一篇讲全Java常用类(详细易懂,建议收藏) 1.字符串相关的类 String类 概述 创建Str ...
- c语言万年历查询程序代码,C语言 万年历程序(示例代码)
C语言 万年历程序 原代码:[email protected]:~/c++$ cat 123.c #include #define Mon 1 #define Tues 2 #define We ...
- c语言万年历大作业报告,C语言万年历设计报告
<C语言万年历设计报告>由会员分享,可在线阅读,更多相关<C语言万年历设计报告(14页珍藏版)>请在人人文库网上搜索. 1.C 语言课程 设计报告 题目:编写万年历系统编写万年 ...
- c语言万年历并计算是一年中第几天
c语言实现万年历 万年历打印是学习c语言路上的一次小小试炼,这也是经典练习例程本文实现的万年历包含的内容和功能:1. 判断日期输入是否正确2. 判断某天是星期几(基姆拉尔森计算公式)3. 判断某天是一 ...
- C语言 万年历 C语言 万年历
C语言 万年历 C语言 万年历 *************************************** 2022 ********************************* ...
- 一步一步教你从零开始写C语言链表(超详细)
STM32 HAL开发完全指南 写文章 一步一步教你从零开始写C语言链表(超详细) 杨源鑫 嵌入式系统工程师.物联网创业合伙人,业务经理兼产品经理 285 人赞同了该文章 为什么要学习链表? 链表主要 ...
- 用linux下的C语言编程万年历,C语言 万年历程序
C语言 万年历程序 原代码:chunli@Linux:~/c++$ cat 123.c #include #define Mon 1 #define Tues 2 #define Wed 3 ...
- 最详细易懂的CRC-16校验原理(附源程序)
from:http://www.openhw.org/chudonganjin/blog/12-08/230184_515e6.html 最详细易懂的CRC-16校验原理(附源程序) 1.循环校验码( ...
- I00029 C语言程序-打印九九乘法表
这是小时候背的九九乘法表,是中文版,不是数字版,用C语言程序打印出来了. C语言程序如下: /* I00029 C语言程序-打印九九乘法表 */#include <stdio.h> #in ...
最新文章
- Nat. Mach. Intell. | 华科同济医学院剑桥联手推出新冠预测模型!
- 让PHP更快的提供文件下载 【转】
- 1-4 开发工具的选择
- 【Breadth-first Search 】785. Is Graph Bipartite?
- powershell自动化操作AD域、Exchange邮箱系列(10)—获取Exchange邮箱用户配额并导出excel
- Flask源码解析:从第一个版本开始阅读Flask源码
- Salesforce 社区可泄露业务敏感信息
- 《写给大家看的设计书》封面设计基本要求
- leetcode-337-打家劫舍三*
- java栈链_Java实现链栈
- java实战项目案例-附带视频教学
- C语言小程序:彩票号码生成器
- (7)公众号开发-自定义菜单
- Impala SQL语句 COMPUTE STATS
- 【Scratch-动作模块】碰到边缘就反弹和翻转方式
- bzoj 1026 //1026: [SCOI2009]windy数
- WMS仓库管理系统有哪些功能介绍
- python中的matplotlib绘图
- UVA11134_Fabled Rooks
- C/C++程序员学习路线
热门文章
- 第一行输出一个1,第二行输出2个2······第N行输出N个N
- 360root7.9,360超级root8011
- linux磁盘格式有哪几种,硬盘的格式都有哪些?哪一种比较好都有什么区别?
- 又一顶尖高校,布局深圳!
- HTML创意黑色蝙蝠侠小丑404页面源码
- linux命令 添加用户,Linux添加用户命令
- 当投票打榜的“饭圈女孩”杀入币圈
- react 元素延迟加载_React中的延迟加载路线
- java 实现图片拼接
- 我眼里的企业内耗9大怪状,兼说中国人的劣根性