实例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中关于super关键字的作用
在子类继承父类中,一般有一行super的语句,需要记住三种使用方法: 1.super.变量/对象名: 使用这种方法可以直接访问父类中的变量或对象,进行修改赋值等操作 2.super.方法名(): 直接 ...
- .Net Core 3.1 WebApi发布到IIS
安装.Net Core 3.1 运行时环境 1.官网地址https://dotnet.microsoft.com/download/dotnet,选择要下载的运行时版本(.Net Core 3.1), ...
- x86-2-保护模式
x86-2-保护模式 操作系统负责计算机上的所有软件和硬件的管理,它可以百分百操作计算机的所有内容.但是,操作系统上编写的用户程序却应当有所限制,只允许用户程序访问属于自己程序的内容,不然整个生态就很 ...
- .NET 云原生架构师训练营(责任链模式)--学习笔记
目录 责任链模式 源码 责任链模式 职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无需关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了 何时使用:在处理 ...
- Linux-saltstack-2 saltstack的基本使用
@ 目录 一.salt命令的基本使用 1.基本语法 例子: 2.salt的常用参数 (1)-S(大写):通过IP或者是网段匹配被管理主机 (2)-E:通过正则匹配主机 (3)-L: 匹配多个主机 (4 ...
- 在 CentOS 7 上安装 GitLab
1. 安装和配置必要的依赖库 sudo yum install -y curl policycoreutils-python openssh-server # the commands below w ...
- Echart可视化学习(二)
文档的源代码地址,需要的下载就可以了(访问密码:7567) https://url56.ctfile.com/f/34653256-527823386-04154f 正文: 页面主体部分 设置测试样式 ...
- 学习Layui笔记-父窗口获取子窗口的radio
最近学习layui,使用radio做单项选择的时候,发现layui无论怎么取值,都是默认取到第一个radio的值. 百度下找解决方法. html页面部分 <div class="lay ...
- FIS本地发布-其他同事通过IP访问
方法很简单,只需在fis的配置文件那里进行修改即可. 文件路径在 C:\Users\Su\AppData\Roaming\npm\node_modules\fis\node_modules\fis-c ...
- android-sdk环境变量配置
1.android-sdk环境变量 1.在系统变量新建:ANDROID_HOME,对应变量值为:G:\android-sdk-windows(sdk安装路径) 2.path添加两个变量(tools和p ...