实例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 程序关键 四." ...
随机推荐
- Java Web程序设计笔记 • 【第4章 JavaBean和JSP标准动作】
全部章节 >>>> 本章目录 4.1 JavaBean 4.1.1 JavaBean 概述 4.1.2 JavaBean的重要性 4.1.3 JavaBean的特点 4.1 ...
- 编写Java程序,创建一个 XML 文档,文档名为“hero.xml”,用于保存“王者荣耀”的英雄信息。
查看本章节 查看作业目录 需求说明: 创建一个 XML 文档,文档名为"hero.xml",用于保存"王者荣耀"的英雄信息.英雄信息包括编号(id).姓名(na ...
- jsp:useBean的scope属性
目录 1.分类 2.page 3.request 4.session 5.application 1.分类 对于jsp:useBean创建的对象,由jsp:useBean的可选属性scope指定,可以 ...
- Centos下查看cpu核数
1.概念物理CPU:实际Server中插槽上的CPU个数.物理cpu数量:可以数不重复的 physical id 有几个. 2.逻辑CPULinux用户对 /proc/cpuinfo 这个文件肯定不陌 ...
- kubernetes 之部署metrics-server
Kubernetes 版本是 1.14 # kubectl version --short Client Version: v1.14.3 Server Version: v1.14.2 下载文件 f ...
- [网络编程] 自己构建一个cgi.FieldStorage()的对象
问题描述: 通常cgi.FieldStorage()返回一个类似于Python字典的对象. 在cgi框架中必须通过浏览器发送表单过来才能接受消息 那么我该怎么进行本地调试呢? 或者说在没有搭建好一整套 ...
- 新增访客数量MR统计之MR数据输出到MySQL
关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)云盘目录说明:tools目录是安装包res 目录是每一个课件对应的代码和资源等doc 目录是一 ...
- Servlet部署描述符
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512237744641540612/ <Servlet简单实现开发部署过程>中的过程,可以概括为以下模 ...
- SYCOJ1717负二进制
题目-负二进制 (shiyancang.cn) 进制的实质在于对于进制数的选择,选择不满足的填入当前的位置,然后除掉,继续开始选择.但是对于本题,是负数,但是进制上的数字为正数,所以就要调整,借位,因 ...
- 第51篇-SharedRuntime::generate_native_wrapper()生成编译入口
当某个native方法被调用时,一开始它会从解释入口进入,也就是我之前介绍的.由InterpreterGenerator::generate_native_entry()函数生成的入口例程.在这个例程 ...