C++ 实现的一个打印日历程序
C++ 实现的一个打印日历程序
说明:总共有三个文件
1、month.h 为定义函数的头文件
2、month.cpp 为函数的实现代码
3、mainprog.cpp 为主函数的实现代码
month.h
void printMonth(int year,int month);
void printMonthTitle(int year,int month);
void printMonthBody(int year,int month);
int getStartDay(int year,int month);
int getTotalNumberOfDays(int year,int month);
int getNumberOfDaysInMonth(int year,int month);
bool isLeapYear(int year);
month.cpp
#include<iostream>
#include<iomanip>
#include "month.h"
using namespace std;
void printMonthTitle(int year,int month)
{
char chMonth[12][7] = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
cout<<endl;
cout<<setw(12)<<year<<"年"<<" ";
cout<<chMonth[month-1]<<endl;
cout<<"------------------------------"<<endl;
cout<<" Sun Mon Tue Wed Thu Fri Sat"<<endl;
}
void printMonthBody(int year,int month)
{
int startDay = getStartDay(year,month);
int numberOfDaysInMonth = getNumberOfDaysInMonth(year,month);
int i = 0;
for(i=0; i<startDay; i++)
{
cout<<" ";
}
for(i=1; i<=numberOfDaysInMonth; i++)
{
cout<<setw(4)<<i;
if((i+startDay)%7==0)
{
cout<<endl;
}
}
cout<<endl;
cout<<"------------------------------"<<endl;
}
int getStartDay(int year,int month)
{
int startDay1800 = 3;
int totalNumberOfDays = getTotalNumberOfDays(year,month);
return (totalNumberOfDays+startDay1800)%7;
}
int getTotalNumberOfDays(int year,int month)
{
int total = 0;
for(int i=1800; i<year; i++)
{
if(isLeapYear(i))
{
total=total+366;
}
else
{
total=total+365;
}
}
for(int i=1; i<month; i++)
{
total=total+getNumberOfDaysInMonth(year,i);
}
return total;
}
int getNumberOfDaysInMonth(int year,int month)
{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
{
return 31;
}
if(month==4||month==6||month==9||month==11)
{
return 30;
}
if(month==2)
{
return isLeapYear(year)?29:28;
}
return 0;
}
bool isLeapYear(int year)
{
return year%400==0||(year%4==0&&year%100!=0);
}
mainprog.cpp
#include<iostream>
#include<iomanip>
#include "month.cpp"
#include "month.h"
using namespace std;
void main()
{
cout<<"请输入年份(如2018):";
int year;
cin>>year;
cout<<"请输入月份(1-12):";
int month;
cin>>month;
printMonth(year,month);
}
void printMonth(int year,int month)
{
printMonthTitle(year,month);
printMonthBody(year,month);
}
结果显示
C++ 实现的一个打印日历程序的更多相关文章
- 一个PHP日历程序
<?php //<-------处理通过GET方法提交的变量;开始--------> if($HTTP_GET_VARS[year]=="") { ...
- java例题_47 读取 7 个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*
1 /*47 [程序 47 打印星号] 2 题目:读取 7 个数(1-50)的整数值,每读取一个值,程序打印出该值个数的*. 3 */ 4 5 /*分析 6 * 1.多次读取---for循环 7 * ...
- Python学习实践-----打印日历
使用python语言实现在控制台打印日历 输入年.月.日 输出对应日历,指定的日数输出为'--' 程序没有做严格的输入验证,故输入整数即可. 以下为没有优化的源码: print_calendar.py ...
- 第一个Django应用程序_part2
一.数据库配置 此文延续第一个Django应用程序_part1. 打开mystic/settings.py.这是一个普通的Python模块,其模块变量表示Django配置 默认情况下,配置使用SQLi ...
- Python实战练习——打印日历教程
很长一段时间没有接触过C语言了,想来做这一行当已经有三两年了. 今天突然想起来以前用C语言在VC6上写代码的日子,想了想以前的一些实战练习. 所以今天打算用Python来写一个C语言以前练习的题目-日 ...
- 字符串混淆技术应用 设计一个字符串混淆程序 可混淆.NET程序集中的字符串
关于字符串的研究,目前已经有两篇. 原理篇:字符串混淆技术在.NET程序保护中的应用及如何解密被混淆的字符串 实践篇:字符串反混淆实战 Dotfuscator 4.9 字符串加密技术应对策略 今天来 ...
- 使用MVVM框架avalon.js实现一个简易日历
最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种轮子,所以这里记录下我当 ...
- 如何把一个c语言程序做成windows服务开机自启动
原文:如何把一个c语言程序做成windows服务开机自启动 目前写的程序是一个用c语言实现socket侦听的,那么如何把这个程序做成开机自启动呢? 我们是通过vs6.0,编译后生成了.exe文件,然后 ...
- avalon.js实现一个简易日历
使用MVVM框架avalon.js实现一个简易日历 最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简 ...
随机推荐
- 比较时间的大小("HH:MM")格式
function compareStrTime( timeStart , timeEnd ) { var dateA = new Date("2018/10/11 " + time ...
- 分块+二分,统计对数 CDOJ
http://acm.uestc.edu.cn/#/problem/show/1157 数列(seq) Time Limit: 3000/1000MS (Java/Others) Memory ...
- unZip/Zip的安装
1.apt-get安装: apt-get install zip 2.yum安装: yum install -y unzip zip
- H5多媒体
Video <video width="500px" controls="controls"> <source src="test. ...
- max-device-width和max-width的区别
比如用媒体查询响应输出@media (max-width: 767px),用谷歌浏览器手机测试插件显示并无变化,其实关键在于max-device-width和max-width,以下摘抄↓ max-d ...
- 【leetcode 简单】第六题 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- 工作中常用的Git操作--------(一)
今天主要记录一下平常工作当中使用的git操作: 1.git的安装这里省略: 2.git的操作指令: 在项目开发中,经常是拉去经理已经搭建好的一个项目,也就是给我们一个git地址.比如:http://g ...
- 2、Web基本介绍及Html语法介绍
1.1 Web基本介绍 1.web就是world wide web的缩写.称之为全球广域网,俗称www.2.我们可以将web理解为就是当前的一种互联网.对于我们来说更多的就是网站服务.3.网站我们可以 ...
- CSS实现箭头效果
有时候网页中使用箭头以增强效果,一般的做法是使用图片,今天我们使用CSSCSS来实现“箭头效果”,使用CSS我们必须兼容所有浏览器(IE6.7.8.9.10.+),Chrome,Firefox,Ope ...
- 宋牧春: Linux设备树文件结构与解析深度分析(2) 【转】
转自:https://mp.weixin.qq.com/s/WPZSElF3OQPMGqdoldm07A 作者简介 宋牧春,linux内核爱好者,喜欢阅读各种开源代码(uboot.linux.ucos ...