实例15_C语言绘制万年历
实例说明:
哎呀,我写了好一会,最后还是不理想,确实不想写了。
1 /**
2 * Copyright (c) 1991 - 2016 Arvin Tang.
3 * All rights reserved.
4 *
5 * 文件名称:实例_C语言绘制万年历
6 * 简要描述:
7 *
8 * 当前版本:1.0
9 * 作 者:
10 * 完成日期:2016-1-7
11 * 修订说明:
12 *
13 * 取代版本:
14 * 作 者:
15 * 完成日期:
16 * 修订说明:
17 */
18 #include <stdio.h>
19 #include <stdlib.h>
20 //
21 //clrscr();函数不是标准的C函数,只存在Tuber C中且#include <conio.h>。
22 //但是可以用system("cls");代替,且#include <stdlib.h>。
23
24 int leap(int year);
25 int week(int year);
26 void dayin(int,int);
27
28 int main(int argc, char const *argv[])
29 {
30 //实例15_编制万年历
31
32 int year;//年份
33
34 int temp;//闰年返回值
35
36 int wee;//每年第一天周几返回值
37
38 printf("请输入你要打印的年份:\n");
39 scanf("%d", &year);
40
41 temp = leap(year);
42
43 switch(temp)
44 {
45 case 0:
46 printf("平年\n");
47 break;
48 case 1:
49 printf("闰年\n");
50 break;
51 default:
52 printf("系统错误!\n");
53 break;
54 }
55
56 wee = week(year);
57
58 printf("本年第一天周%d\n", wee);
59
60 dayin(temp,wee);
61
62 return 0;
63 }
64
65 /**
66 * 函数名称:判断一个年份是否为闰年
67 * 输入参数:year
68 * 输出参数:
69 * 返 回 值:闰年返回1,平年返回0。
70 */
71 int leap(int year)
72 {
73 if((year % 4 ==0 && year % 100 !=0) || year % 400 ==0)
74 {
75 return 1;
76 }
77 else
78 {
79 return 0;
80 }
81 }
82
83 /**
84 * 函数名称:判断某年的第一天星期几
85 * 输入参数:year
86 * 输出参数:
87 * 返 回 值:返回周几
88 */
89 int week(int year)
90 {
91 int week;
92
93 week = ((year-1) + (year-1)/4 - (year-1)/100 + (year-1)/400 + 1) % 7;
94
95 if(week == 7)
96 {
97 week = 0;
98 }
99
100 return week;
101 }
102
103 /**
104 * 函数名称:打印万年历
105 * 输入参数:temp,week
106 * 输出参数:
107 * 返 回 值:返回周几
108 */
109 void dayin(int temp,int week)
110 {
111 int l,m,n;
112
113 int number = 1;
114
115 int date[12][6][7];//12个月,每个月最多6周,每周最多7天
116
117 int lin = 0;
118
119 //给三维数组赋值
120 for(l = 0; l < 12; l++)
121 {
122 for(m = 0; m < 6; m++)
123 {
124 for(n = 0; n < 7; n++, number++)
125 {
126 if(lin < week+1)
127 {
128 date[l][m][n] = 0;//由每年第一天周几判断
129 lin++;
130 if(lin == week+1)
131 {
132 number = 1;
133 }
134 }
135 else
136 {
137 date[l][m][n] = number;
138 }
139
140 if(temp != 0)//非0即为闰年
141 {
142 //闰年月份1,3,5,7,8,10,12每月31天,2月29天,其余月份30天
143 if(l == 0 || l == 2 || l == 4 || l == 6 || l == 7 || l == 9 || l == 11)
144 {
145 if(number == 31)
146 {
147 number = 0;
148 }
149 }
150 else if(l == 1)
151 {
152 if(number == 29)
153 {
154 number = 0;
155 }
156 }
157 else
158 {
159 if(number == 30)
160 {
161 number = 0;
162 }
163 }
164 }
165 else//平年
166 {
167 //平年月份1,3,5,7,8,10,12每月31天,2月28天,其余月份30天
168 if(l == 0 || l == 2 || l == 4 || l == 6 || l == 7 || l == 9 || l == 11)
169 {
170 if(number == 31)
171 {
172 number = 0;
173 }
174 }
175 else if(l == 1)
176 {
177 if(number == 28)
178 {
179 number = 0;
180 }
181 }
182 else
183 {
184 if(number == 30)
185 {
186 number = 0;
187 }
188 }
189 }
190 }
191 }
192 }
193
194 //开始打印
195 printf("1月:\n");
196 printf("周日\t周一\t周二\t周三\t周四\t周五\t周六\n");
197 for(l = 0; l < 12; l++)
198 {
199 for(m = 0; m < 6; m++)
200 {
201 for(n = 0; n < 7; n++ , number++)
202 {
203 if(date[l][m][n] == 0)
204 {
205 printf("\t");
206 }
207 else if(date[l][m][n] != 0 && date[l][m][n] ==1)
208 {
209 printf("\n\n");
210 printf("%d月:\n", l+2);
211 printf("周日\t周一\t周二\t周三\t周四\t周五\t周六\n");
212 printf("%d\t", date[l][m][n]);
213
214 }
215 else
216 {
217 printf("%d\t", date[l][m][n]);
218 }
219 }
220 printf("\n");
221 }
222 }
223 }
我的错误代码
书上代码:
实例15_C语言绘制万年历的更多相关文章
- Redis:安装、配置、操作和简单代码实例(C语言Client端)
Redis:安装.配置.操作和简单代码实例(C语言Client端) - hj19870806的专栏 - 博客频道 - CSDN.NET Redis:安装.配置.操作和简单代码实例(C语言Client端 ...
- R语言绘制相对性关系图
准备 第一步就是安装R语言环境以及RStudio 图绘制准备 首先安装库文件,敲入指令,回车 install.packages('corrplot') 然后安装excel导入的插件,点击右上角impo ...
- C语言学习笔记:15_c语言中的进制操作.c
/* * 15_c语言中的进制操作.c * * Created on: 2015年7月5日 * Author: zhong */ #include <stdio.h> #include & ...
- 一幅图解决R语言绘制图例的各种问题
一幅图解决R语言绘制图例的各种问题 用R语言画图的小伙伴们有木有这样的感受,"命令写的很完整,运行没有报错,可图例藏哪去了?""图画的很美,怎么总是图例不协调?" ...
- Python语言程序设计(3)--实例2-python蟒蛇绘制-turtle库
1. 2. 3.了解turtle库 Turtle,也叫海龟渲染器,使用Turtle库画图也叫海龟作图.Turtle库是Python语言中一个很流行的绘制图像的函数库.海龟渲染器,和各种三维软件都有着良 ...
- R语言绘制空间热力图
先上图 R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面内置了国内外诸多城市坐标数据,使用起来方便快捷. 开始 首先安装相关包 install_packages("dev ...
- R语言绘制花瓣图flower plot
R语言中有很多现成的R包,可以绘制venn图,但是最多支持5组,当组别数大于5时,venn图即使能够画出来,看上去也非常复杂,不够直观: 在实际的数据分析中,组别大于5的情况还是经常遇到的,这是就可以 ...
- R语言绘制沈阳地铁线路图
##使用leaflet绘制地铁线路图,要求 ##(1)图中绘制地铁线路 library(dplyr) library(leaflet) library(data.table) stations< ...
- 011 实例2-Python蟒蛇绘制
目录 一."Python蟒蛇绘制"问题分析 1.1 Python蟒蛇绘制 二."Python蟒蛇绘制"实例编写 三.运行效果 3.1 程序关键 四." ...
随机推荐
- maven打包报错 Fatal error compiling: tools.jar not found: C:\Program Files\Java\jre1.8.0_151\..\lib\tool
maven 打包报错 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:comp ...
- TCP KeepAlive机制理解与实践小结
0 前言 本文将主要通过抓包并查看报文的方式学习TCP KeepAlive机制,以此加深理解. 1 TCP KeepAlive机制简介 TCP长连接下,客户端和服务器若长时间无数据交互情况下,若一方出 ...
- Hadoop(HDFS,YARN)的HA集群安装
搭建Hadoop的HDFS HA及YARN HA集群,基于2.7.1版本安装. 安装规划 角色规划 IP/机器名 安装软件 运行进程 namenode1 zdh-240 hadoop NameNode ...
- JavaWeb中Cookie会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- Centos安装DenyHosts
一.背景 个人申请的腾讯云主机被扫描端口,数百次登录失败的尝试 解决方法:安装工具,记录并屏蔽恶意访问. 二.检查环境 系统安装的sshd是否支持tcp_wrappers(默认都支持) ldd /us ...
- RocketMQ架构原理解析(一):整体架构
RocketMQ架构原理解析(一):整体架构 RocketMQ架构原理解析(二):消息存储(CommitLog) RocketMQ架构原理解析(三):消息索引(ConsumeQueue & I ...
- Flowable实战(八)BPMN2.0 任务
任务是流程中最重要的组成部分.Flowable提供了多种任务类型,以满足实际需求. 常用任务类型有: 用户任务 Java Service任务 脚本任务 业务规则任务 执行监听器 任务监听器 多 ...
- Android-ViewPager中调用notifyDataSetChanged失效问题--setItemPosition--POSITION_NONE
最基本的方法: 针对于child view比较简单的情况(例如仅有TextView.ImageView等,没有ListView等展示数据的情况),可以在自己的Adapter中加入代码: @Overri ...
- .NET 云原生架构师训练营(KestrelServer源码分析)--学习笔记
目录 目标 源码 目标 理解 KestrelServer 如何接收网络请求,网络请求如何转换成 http request context(C# 可识别) 源码 https://github.com/d ...
- winform 中心旋转 图片旋转
//设置左上角到中心点 g.TranslateTransform(int.Parse(x), int.Parse(y)); //旋转角度 g.RotateTransform(int.Parse(&qu ...