实例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 程序关键 四." ...
随机推荐
- MySQL数据操作与查询笔记 • 【第4章 SELECT 数据查询】
全部章节 >>>> 本章目录 4.1 select 选择列表 4.1.1 select 基本结构 4.1.2 选择列表 4.2 MySQL 运算符 4.2.1 MySQL ...
- DOTween实现缓动变值动效
DOTween.To(getter, setter, to, float duration) 是常用的一个变值方法(一定时间将某变量从起始值到终点值进行变化),可以便捷实现 滚分.涨进度条 等功能 但 ...
- 使用docker或者docker-compose部署Zookeeper集群
之前有介绍过Zookeeper的安装部署(Zookeeper基础教程(二):Zookeeper安装),但是那里我是基于独立的虚拟机来实现部署的,这种部署方式适合线上集群部署.后来有几次想用一下Zook ...
- IOS自动化,使用到坐标点击,模拟器的分辨率怎么获取?
IOS不能通过具体元素定位,就要考虑用坐标来点击,不同的模拟器分辨率不太一样,怎么获取模拟器的分辨率? 可能会想是不是和android模拟器一样,可以直接通过界面看到具体分辨率,不过ios好像不可以直 ...
- 关于Mysql的Qcache优化
query_cache_size = 64M 指定MySQL查询缓冲区的大小.可以通过在MySQL控制台执行以下命令观察:# > SHOW VARIABLES LIKE '%query_cach ...
- linux如何查看服务器当前的并发访问量
linux如何查看服务器当前的并发访问量 [root@localhost ~]# netstat -pnt | grep :80 | wc -l 2 [root@localhost ~]# netst ...
- (随手记)Javascript 的parseInt函数,在IE和非IE内核浏览器运行的不同结果
一段JS小程序: var str = "09"; var itr = parseInt(str); alert(itr); IE下运行,alert(0); 火狐和chrome下运行 ...
- Underscore.js 1.3.3 源码分析收藏
Underscore是一个提供许多函数编程功能的库,里面包含了你期待(在Prototype.js和Ruby中)的许多功能.但是没有扩展任何内置的Javascript对象,也就是说它没有扩展任何内置对象 ...
- 自动化集成:Pipeline整合Docker+K8S
前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成K8S用法. 一.背景描述 分布式服务的部署 ...
- 51 Nod 1133 不重叠的线段 (贪心算法)
原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1133 题目分析:感觉这到第不应该被分到二级算法题,比 109 ...