zoukankan      html  css  js  c++  java
  • 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);
    }
    

    结果显示

  • 相关阅读:
    什么才是java的基础知识?
    Java的背景、影响及前景
    设计模式分类
    关于日期及日期格式转换的记录
    添加同名工具后台验证后不跳转且保留用户输入的数值
    案件讨论回复中出现把多个附件当成一个评论显示,导致分页出错
    指令发布详情弹窗实现“取消”按钮
    最大间隔分离超平面的唯一性完整证明
    CART算法与剪枝原理
    Spark MLlib学习
  • 原文地址:https://www.cnblogs.com/hgnulb/p/10041606.html
Copyright © 2011-2022 走看看