实例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 程序关键 四." ...
随机推荐
- PostgresSQL客户端pgAdmin4使用
1.说明 pgAdmin 4是一款为PostgreSQL设计的可靠和全面的数据库设计和管理软件, 它允许您连接到特定的数据库,创建表和运行各种从简单到复杂的SQL语句. 它支持的操作系统包括Linux ...
- PathCopyCopy一键复制文件路径
1.简介 PathCopyCopy一键复制文件/文件夹名称和路径, 右键文件或者文件夹,可以复制名称,路径和父目录等. 2.推荐理由 当我们想拷贝文件名或者文件路径时,简直是神器啊,实测真的好用. 还 ...
- 目录-Bug集锦
<Bug集锦>主要是收集一些较有回顾意义的Bug以及Bug的处理思路,方便大家互相学习. 目录 BUG-Nuget包版本不一致导致程序行为与预期不符
- Linux-saltstack-2 saltstack的基本使用
@ 目录 一.salt命令的基本使用 1.基本语法 例子: 2.salt的常用参数 (1)-S(大写):通过IP或者是网段匹配被管理主机 (2)-E:通过正则匹配主机 (3)-L: 匹配多个主机 (4 ...
- VoIP语音处理流程和知识点梳理
做音频软件开发10+年,包括语音通信.语音识别.音乐播放等,大部分时间在做语音通信.做语音通信中又大部分时间在做VoIP语音处理.语音通信是全双工的,既要把自己的语音发送出去让对方听到,又要接收对方的 ...
- STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解)
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) 前面 ...
- nginxWebUI
nginx网页配置工具 github: https://github.com/cym1102/nginxWebUI 功能说明 本项目可以使用WebUI配置nginx的各项功能, 包括http协议转发, ...
- spring boot & maven 多模块 ---心得
1.前言 有个名字叫 多模块企业级项目 ,其实就是一个父级maven工程里面有着多个子级maven工程的项目 ,甚至在子级maven 里面还有多个子级maven, 这用到了 maven多模块开发的使 ...
- Git Book PDF下载
Download Git-Book
- BugKu CTF(杂项篇MISC)-贝斯手
打开是以下内容 先看一下给了哪些提示 1.介绍 没了?不,拉到最底下还有 2.女神剧照 密码我4不会告诉你的,除非你知道我的女神是哪一年出生的(细品) 大致已经明白了,四位数密码,出生年份 文件是以下 ...