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快速实现了一个简 ...
随机推荐
- java格式化字符串,在指定位置插入指定字符串,兼容中英文以及特殊字符,例如:换行,用于解决生成pdf换行问题等问题
本博客是自己在学习和工作途中的积累与总结,仅供自己参考,也欢迎大家转载,转载时请注明出处. http://www.cnblogs.com/king-xg/p/6370890.html 如果觉得对您有 ...
- [DeeplearningAI笔记]序列模型3.7-3.8注意力模型
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.7注意力模型直观理解Attention model intuition 长序列问题 The problem of ...
- CF851 C 暴力
给出n个5维下的点,求点a不与其它任意的b,c重合,向量ab,ac的夹角都为钝角,这样的点个数,并打印它们. 转换二维下的求角度的函数为五维的,而且由于要求角度大于90度,在二维情况下最多有4个点,也 ...
- select表单元素详解及下拉列表模拟实现
原文地址:→看过来 写在前面 select 是HTML表单元素中很常用的一个,其中很重要的几个属性常被忽略,但这几个属性却能帮助我们完成很多的功能,当然,select下拉列表默认样式很不友好,所以更多 ...
- CSS 文本属性
一.文本位置 text-align: 参数 /** * left center right:左中右**/text-align: left; 二.文本行间距 line-height: 参数 特别要注意: ...
- ASP.Net Web 服务 – 如何使用会话状态
在上次博客帖子中,我们讨论了客户端对web服务的使用.在这篇文章中我们将复习一下如何使用web服务的会话状态. 这是上一篇文章的延续.因此请迅速的回顾之前的文章以便有一个清晰的概念. 在web服务中要 ...
- bootstrap-select,selectpicker 用法详细:通过官方文档翻译
用过selectpicker的都说好~但是网上中文的教程又找不到比较完整的用法,于是去官网看了下 顺便弄过来翻译一下: 选项可以通过数据属性或JavaScript传递.对于数据属性,附加选项名称dat ...
- leetcode.C.4. Median of Two Sorted Arrays
4. Median of Two Sorted Arrays 这应该是最简单最慢的方法了,因为本身为有序,所以比较后排序再得到中位数. double findMedianSortedArrays(in ...
- PXC加入新节点避免SST时grastate.dat文件内容的修改问题
PXC加入新节点避免SST时grastate.dat文件内容的修改问题 在主从同步完成并关闭实例后,需要修改grastate.dat中的seqno:到底应该填已经执行过最后的XID号(Executed ...
- Codeforces Round #441 (Div. 2)
Codeforces Round #441 (Div. 2) A. Trip For Meal 题目描述:给出\(3\)个点,以及任意两个点之间的距离,求从\(1\)个点出发,再走\(n-1\)个点的 ...