【CC++】打印日历
根据输入的年份和月份来输出该年月的日历。
![](/assets/blank.gif)
- 上图中每个汉字(一、二…日)占四个字节,右对齐,由于汉字显示本身就占2个字节,所以只需要在汉字前面多输出两个空格就好了。每个日期数字占4个字节,也是右对齐,这样能使输出的日历上下对齐。
- 剩下的事情就是循环输出这个月的所有日期了,这个月有多少天可以专门用一个函数实现,注意闰年二月(判闰年的函数这里又可以用一次了)是29天。
- 在 1 号前应该留多少空位(如果 1 号是星期 n ,则留 n-1 个空位,每个空位是一个日期的宽度),注意什么时候换行(日期加 1号前空位数量是 7 的倍数则换行)。
要求
- 每个汉字(一、二、…、日)占四个字节,右对齐,由于汉字显示本身就占2个字节,所以只需要在汉字前面多输出两个空格就好了;
- 每个日期数字占4个字节,也是右对齐,这样能使输出的日历上下对齐。
预期输出
程序
// 包含两种I/O库,可以使用任一种输入输出方式
#include <stdio.h>
#include <iostream>
using namespace std;// 函数printMonth:按要求的格式打印某年某月的日历
// 参数:year-年,month-月
// 返回值:无
void printMonth(int year, int month);// leapYear:判断闰年
// 参数:y-年
// 返回值:1-是闰年,0-不是闰年
int leapYear(int y)
{if((y % 4 == 0 && y % 100 != 0 )|| y % 400 == 0)return 1;return 0;
}// 函数whatDay:计算某年某月的1号是星期几
// 参数:year-年,month-月
// 返回值:1到7--星期1到星期日
int whatDay(int year, int month)
{// 1年月日是星期一int w = 1;int i;// 1到year-1都是全年for(i = 1; i < year; i++){if(leapYear(i))w += 366;elsew += 365;}switch(month){case 12: // 加月的w += 30;case 11: // 加月的w += 31;case 10: // 加月的w += 30;case 9: // 加月的w += 31;case 8: // 加月的w += 31;case 7: // 加月的w += 30;case 6: // 加月的w += 31;case 5: // 加月的w += 30;case 4: // 加月的w += 31;case 3: // 加月的if(leapYear(year))w += 29;elsew += 28;case 2: // 加月的天w += 31;case 1: // 1月不加了;}// 得到-6,其中为星期天w = w % 7; // 调整星期天if(w == 0)w = 7;return w;
}void printMonth(int year, int month)
{int d = whatDay(year, month);int n = 0;cout << " " << "一 " << "二 " << "三 "<< "四 " << "五 " << "六 " << "日" << endl;for (int i = 0; i < d - 1; i++){cout << " ";}switch (month){case 1:n = 31;break;case 2:if (leapYear(year))n = 29;else n = 28;break;case 3:n = 31;break;case 4:n = 30;break;case 5:n = 31;break;case 6:n = 30;break;case 7:n = 31;break;case 8:n = 31;break;case 9:n = 30;break;case 10:n = 31;break;case 11:n = 30;break;case 12:n = 31;break;}for (int i = 1; i < n + 1; i++){if (i < 10)cout << " " << i;elsecout << " " << i;switch (d){case 1:if ((i % 7) == 0)cout << endl;break;case 2:if ((i % 7) == 6)cout << endl;break;case 3:if ((i % 7) == 5)cout << endl;break;case 4:if ((i % 7) == 4)cout << endl;break;case 5:if ((i % 7) == 3)cout << endl;break;case 6:if ((i % 7) == 2)cout << endl;break;case 7:if ((i % 7) == 1)cout << endl;break;}}cout << endl;
}int main()
{// 年、月int y, m;// 输入年月cin >> y >> m;// 输出该年月的日历printMonth(y,m);return 0;
}
测试
【CC++】打印日历相关推荐
- python日历提醒_python打印日历
#未优化的代码 1 #输出日历 def print_calendar(year,month,date = 1): month_dict = {'':'January','':'February','' ...
- Java黑皮书课后题第6章:**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几
6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几 题目 题目描述 编程练习题3.21的Zel ...
- isleapyear python_Python实战练习——打印日历教程
很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...
- Outlook怎么打印日历 Outlook日历打印教程
Outlook中的日历想要打印出来,该怎么打印日历呢?下面我们就来看看详细的教程. Outlook怎么打印日历? Outlook日历打印教程 1.下载安装outlook软件. Outlook怎么打印日 ...
- foxmail邮件怎样打印日历
foxmail邮件中的日历有很多信息,想要打印日历,该怎么打印呢?我们点击日历信息.点击设置按钮,再点击打印按钮,先进行设置打印机,然后打印邮件的日历,下面我们就来看看详细的图文教程. foxmail ...
- Java日历打印_使用java 打印日历
package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...
- python设计函数isleapyear_Python实战练习——打印日历教程
很长一段时间没有接触过c语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用c语言在vc6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用python来写一个c语言以前练习的题目-日 ...
- 第六章第三十四题(打印日历)(Print calendar) - 编程练习题答案
**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几.使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几. **6.34(Print calen ...
- Python:打印日历,验证信用卡号是否合法
Python语言基础-2.5函数基础(理) 第5关:函数综合实训-打印日历 本关任务:利用函数的知识完成如下习题: 1.编写判断信用卡号是否合法的判断程序. 2.编写函数模块,打印日历程序 第1题 信 ...
- python打印一年的日历_使用Python打印日历
在本教程中,我们将学习如何使用Python的日历模块打印月份和年份的日历.在Python中这很简单.我们需要年和月的数字.而已. 让我们看看如何打印年历.请按照以下步骤打印年历.导入日历模块. 初始化 ...
最新文章
- python post提交数据
- 数据结构(python语言)目录链接
- P1273 有线电视网
- java广度优先遍历
- IAR stm8 调试时无法看到局部变量解决
- python mysql autocommit_MySQLdb autocommit的坑
- rabbitmq的通配符模式(Topic Exchange)的*和#区别
- 前端跨域问题解决方案
- python文件拆分_python – 在几个文件中拆分views.py.
- C 标准库——cmath/math.h
- PHP-FPM 设置多pool、配置文件重写
- 帆软填报Execl表格不定行导入
- 耒阳计算机学校,耒阳县系统分析师_科泰计算机学校
- php元换成万元,元换算成万元(元与万元的换算器)
- 微型计算机硬件系统基本组成是什么,计算机硬件系统基本组成有什么?
- C#打印正三角、倒三角、平行四边形
- chrome控制台如何把vw显示成px_Python + selenium + Chrome 模拟登陆QQ邮箱,批量下载附件,本地重命名
- TOM企业邮箱登录入口在哪里?分享企业邮箱登录入口手机网页版
- Linux 文件名和路径的最大长度
- Android 动画
热门文章
- python timestamp to date
- HM3416H降压IC芯片PWM/PFM 控制 DC-DC 降压转换器
- 葡萄城首席架构师:前端开发与Web表格控件技术解读
- android 动画失效,Activity退出动画无效的解决方案
- 如何压缩mp3文件大小,5分钟学会4种方法
- 基于matlab的扩频通信系统建模与仿真,基于Simulink的基带数字通信系统的仿真实现...
- 2017瀚纳仕亚洲薪酬指南
- 强化学习笔记(一)基础篇
- 博士申请 | 美国佛罗里达大学陈世刚教授招收人工智能/机器学习方向博士生
- 回环检测线程 检测闭环候选帧 计算闭环处相似变换sim3 闭环处融合更新