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快速实现了一个简 ...
随机推荐
- Qt ------ 设置透明度
void setWindowOpacity(qreal level); //设置所有控件的不透明度 setAttribute(Qt::WA_TranslucentBackground); // ...
- animatescroll.min.js ~~~~ jq滚动效果 优化target自定义方法
$(".meun>div[name='meun_nav']>a").eq(1).on("click",function(){ $("bod ...
- myeclipse注册机,自己生成注册码
话不多少,直接上代码 直接可以运行,自己输入key即可 package com.generate.myeclipse.code; import java.io.BufferedReader; impo ...
- nova-api源码分析(APP中用到的开源库)
源码版本:H版 1.paste.deploy 参考文章: http://pythonpaste.org/deploy/ http://blog.csdn.net/xiangmin2587/articl ...
- TersorflowTutorial_MNIST数据集上简单CNN实现
MNIST数据集上简单CNN实现 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 Tensorflow机器学习实战指南 源代码请点击下方链接欢迎加星 Tesorflow实现基于MNI ...
- 2017北京国庆刷题Day7 afternoon
期望得分:100+30+100=230 实际得分:60+30+100=190 排序去重 固定右端点,左端点单调不减 考场上用了二分,没去重,60 #include<cstdio> #inc ...
- 单调队列 + 组合数统计 Gym 101102D
题目链接:http://codeforces.com/gym/101102/problem/D 题目大意:给你一个n*m的矩阵,矩阵里面的数值范围为[1,1e9].这个矩阵有一个值,如果相邻的多个数字 ...
- (一)Hadoop1.2.1安装——单节点方式和单机伪分布方式
Hadoop1.2.1安装——单节点方式和单机伪分布方式 一. 需求部分 在Linux上安装Hadoop之前,需要先安装两个程序: 1)JDK 1.6(或更高版本).Hadoop是用Java编写的 ...
- Linux 操作系统下 VI 编辑器常用命令详细介绍
一.Vi 简介 vi是unix世界中最通用的全屏编辑器,linux中是用的是vi的加强版vim,vim同vi完全兼容,vi就是"visual interface"的缩写.它可以执行 ...
- TED_Topic1:Why we need to rethink capitalism
Topic 1:Why we need to rethink capitalism By Paul Tudor Jones II # Background about our speaker ...