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快速实现了一个简 ...
随机推荐
- C++ ------ static_cast,dynamic_cast,reinterpret_cast,const_cast
C++类型转换分为:隐式类型转换和显式类型转换 第1部分. 隐式类型转换 又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) : 在混合类型的算术表达式 ...
- 在web.xml中添加servlet报错问题
出现这种问题的原因是因为servlet-name标签中没有名称,如果错误出现在servlet上,也是一样,补充servlet-name名称即可.如下图
- Latent Semantic Analysis(LSA/ LSI)原理简介
LSA的工作原理: How Latent Semantic Analysis Works LSA被广泛用于文献检索,文本分类,垃圾邮件过滤,语言识别,模式检索以及文章评估自动化等场景. LSA其中一个 ...
- CF864 E DP 输出路径
n个物品有Deadline,拿物品需要花费时间,问取得最大价值的方案. 本质是个01背包,先按时间排序,然后把花费的时间作为背包就行了. 主要就是找方案,倒过来找发生转移的就行了. 太菜了真的不会打C ...
- How To Build Compelling Stories From Your Data Sets
How To Build Compelling Stories From Your Data Sets Every number has a story. As a data scientist, y ...
- Anniversary party(树形dp入门)
Anniversary party Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- CSS浏览器兼容问题集-第三部分
FF与IE 1. Div居中问题 div设置 margin-left, margin-right 为 auto 时已经居中,IE 不行,IE需要设定body居中,首先在父级元素定义text-algin ...
- JavaScript中innerText和innerHTML的区别
案例 <html> <head> <meta http-equiv="Content-Type" content="text/html;ch ...
- 使用Docker 快速搭建nuget本地服务器,Hosting private nuget server using docker in seconds!
Server #below line automatically creates the folder, mount the volumes and maps the ports. docker ru ...
- python作业类Fabric主机管理程序开发(第九周)
作业需求: 1. 运行程序列出主机组或者主机列表 2. 选择指定主机或主机组 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) 4. 充分使用多线程或多进程 5. 不同主机的用户名密码 ...