根据输入的年份和月份来输出该年月的日历。

  • 上图中每个汉字(一、二…日)占四个字节,右对齐,由于汉字显示本身就占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++】打印日历相关推荐

  1. python日历提醒_python打印日历

    #未优化的代码 1 #输出日历 def print_calendar(year,month,date = 1): month_dict = {'':'January','':'February','' ...

  2. Java黑皮书课后题第6章:**6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几

    6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几,使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几 题目 题目描述 编程练习题3.21的Zel ...

  3. isleapyear python_Python实战练习——打印日历教程

    很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...

  4. Outlook怎么打印日历 Outlook日历打印教程

    Outlook中的日历想要打印出来,该怎么打印日历呢?下面我们就来看看详细的教程. Outlook怎么打印日历? Outlook日历打印教程 1.下载安装outlook软件. Outlook怎么打印日 ...

  5. foxmail邮件怎样打印日历

    foxmail邮件中的日历有很多信息,想要打印日历,该怎么打印呢?我们点击日历信息.点击设置按钮,再点击打印按钮,先进行设置打印机,然后打印邮件的日历,下面我们就来看看详细的图文教程. foxmail ...

  6. Java日历打印_使用java 打印日历

    package hangshu; /* * 打印从1900年到2.year年的日历 */ import java.util.Scanner; public class Calender { publi ...

  7. python设计函数isleapyear_Python实战练习——打印日历教程

    很长一段时间没有接触过c语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用c语言在vc6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用python来写一个c语言以前练习的题目-日 ...

  8. 第六章第三十四题(打印日历)(Print calendar) - 编程练习题答案

    **6.34(打印日历)编程练习题3.21使用Zeller一致性原理来计算某天是星期几.使用Zeller的算法简化程序清单6-12以获得每月开始的第一天是星期几. **6.34(Print calen ...

  9. Python:打印日历,验证信用卡号是否合法

    Python语言基础-2.5函数基础(理) 第5关:函数综合实训-打印日历 本关任务:利用函数的知识完成如下习题: 1.编写判断信用卡号是否合法的判断程序. 2.编写函数模块,打印日历程序 第1题 信 ...

  10. python打印一年的日历_使用Python打印日历

    在本教程中,我们将学习如何使用Python的日历模块打印月份和年份的日历.在Python中这很简单.我们需要年和月的数字.而已. 让我们看看如何打印年历.请按照以下步骤打印年历.导入日历模块. 初始化 ...

最新文章

  1. python post提交数据
  2. 数据结构(python语言)目录链接
  3. P1273 有线电视网
  4. java广度优先遍历
  5. IAR stm8 调试时无法看到局部变量解决
  6. python mysql autocommit_MySQLdb autocommit的坑
  7. rabbitmq的通配符模式(Topic Exchange)的*和#区别
  8. 前端跨域问题解决方案
  9. python文件拆分_python – 在几个文件中拆分views.py.
  10. C 标准库——cmath/math.h
  11. PHP-FPM 设置多pool、配置文件重写
  12. 帆软填报Execl表格不定行导入
  13. 耒阳计算机学校,耒阳县系统分析师_科泰计算机学校
  14. php元换成万元,元换算成万元(元与万元的换算器)
  15. 微型计算机硬件系统基本组成是什么,计算机硬件系统基本组成有什么?
  16. C#打印正三角、倒三角、平行四边形
  17. chrome控制台如何把vw显示成px_Python + selenium + Chrome 模拟登陆QQ邮箱,批量下载附件,本地重命名
  18. TOM企业邮箱登录入口在哪里?分享企业邮箱登录入口手机网页版
  19. Linux 文件名和路径的最大长度
  20. Android 动画

热门文章

  1. python timestamp to date
  2. HM3416H降压IC芯片PWM/PFM 控制 DC-DC 降压转换器
  3. 葡萄城首席架构师:前端开发与Web表格控件技术解读
  4. android 动画失效,Activity退出动画无效的解决方案
  5. 如何压缩mp3文件大小,5分钟学会4种方法
  6. 基于matlab的扩频通信系统建模与仿真,基于Simulink的基带数字通信系统的仿真实现...
  7. 2017瀚纳仕亚洲薪酬指南
  8. 强化学习笔记(一)基础篇
  9. 博士申请 | 美国佛罗里达大学陈世刚教授招收人工智能/机器学习方向博士生
  10. 回环检测线程 检测闭环候选帧 计算闭环处相似变换sim3 闭环处融合更新