万年历

原创 2006年06月24日 12:54:00

源代码如下:

#include <iostream>

using namespace std;

 

void DataShow(int d, int w, int ** p);  // 显示日历函数d为本月共有多少天,w为第一天为星期几,p为存储空间

 

int main()

{

    char key;

    int year = 0;           // 当前查询的年份

    int count = 0 ;         // 从年到当前年闰年的个数(包括当前年)

    int current = 0;        // current为,当前年为闰年;为,当前年为平年

    long int days = 0;      // 从年到当前年闰年的个数(不包括当前年)

    int which = 1;          // 判定当前年的第一天是星期几

    int ** data = new int *[6]; // 分配个空格

    for (int i = 0; i < 6; ++i)

        data[i] = new int[7];

    while (key != 'Q' && key != 'q')

    {

        cout << "请输入所要查询的年份(19999): ";

        cin >> year;

        while (cin.get() != '/n')

                ;

        if (year >=1 && year <= 9999)

        {

            count = 0;      // 全部回复原始设定

            current = 0;

            days = 0;

            which = 1;

            for (int i = 1; i <= year; ++i)

            {

                if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0))     // 闰年判定条件:能被整除且不能被整除,或者能被整除

                {

                    count++;

                    if (i == year)

                        current = 1;

                }

            }

            days = 365 * (year - 1) + count;    // 计算从年到当前年的总天数(不包括当前年)

            if (current == 1)                   // 如果当前年为闰年,则总天数减去

                days--;    

            which += days % 7;                  // 计算当前年第一天为星期几

            cout << "/n********* " ;

            cout.width(4);

            cout << year;

            cout << "年年历*********/n";

            cout << "******************************/n"

                 << "           一月份/n"

                 << "******************************/n"

                 << "        /n";

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           二月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;           // 计算当月第一天是星期几

            if (current == 1)

                DataShow(29, which, data);

            else

                DataShow(28, which ,data);

            cout << "******************************/n"

                 << "           三月份/n"

                 << "******************************/n"

                 << "        /n";

            if (current == 1)

            {

                which = (which + 29) % 7;

                DataShow(29, which, data);

            }

            else

            {

                which = (which + 28) % 7;

                DataShow(28, which ,data);

            }

            cout << "******************************/n"

                 << "           四月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           五月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 30) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           六月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           七月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 30) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           八月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           九月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "           十月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 30) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "          十一月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 31) % 7;

            DataShow(31, which, data);

            cout << "******************************/n"

                 << "          十二月份/n"

                 << "******************************/n"

                 << "        /n";

            which = (which + 30) % 7;

            DataShow(31, which, data);

            cout << "/n退出请按'Q',继续查询请按回车:";

            key = cin.get();

            cout << endl << endl;

        }

        else

            cout << "/n输入错误/n/n";

    }

    cout << "/n程序结束,谢谢使用!^O^/n/n";

    return 0;

}

 

void DataShow(int d, int w, int ** p)

{

    int temp = 1;      

    int number = d;     // 实际天数监测

    for (int i = 0; i < 6; ++i)

    {

        for (int j = 0; j < 7; ++j)

        {

            if ((i == 0 && j < w) || number == 0 )      // 无日期对应项中填充空格

                p[i][j] = 0;

            else

            {

                p[i][j] = temp++;

                number--;

            }

        }

    }

    for (int i = 0; i < 6; ++i)

    {

        for (int j = 0; j < 7; ++j)

        {

            if (p[i][j] == 0)

            {

                cout.width(4);      // 控制输出格式

                cout << "";

            }

            else

            {

                cout.width(4);

                cout << p[i][j];

            }

        }

        cout << endl;

    }

    cout << endl;

}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

万年历农历程序(抄表法)

//C51写的公历转农历和星期  #define uchar unsigned char #define uint unsigned int #include /* 公历年对应的农历数据,...

Java-实现万年历

使用Java实现万年历。 代码如下:package com.oraleoaec.test; import java.util.Calendar; import java.util.Scanner; ...

基于Win32控制台的万年历的实现(下)

在“基于Win32控制台的万年历的实现(上)”中,实现了指定年份日历的显示。在显示日历时,每次只能显示一个月份。本文将程序进行修改,使其每次可以实现指定个数的月份,如图1所示。

《万年历》

#include #include using namespace std; class Date { private: int year; int month; int day; int...

C#实现万年历(农历、节气、节日、星座、星宿、属相、生肖、闰年月、时辰)

using System.Collections.Generic; using System.Text; using System; namespace yangliToyinli { ...

基于至简设计法实现的万年历功能

一、   功能描述 1、上板复位后从元年1月1号开始计数,为方便上板调试,将一天的时间压缩为1秒; 2、按键用于设置日历,按下按键0进入设置状态,再次按下按键0退出设置状态;3、按键1...

SQL 生成公曆和農曆對照數據續--创建萬年曆查找各種周期性節日數據

---sql server 2005 測試 塗聚文 捷為工作室,締友計算機信息技術有限公司 ---查找公曆節日 --select (@year-GooddayStaryear) as Gyear,G...

ACM竞赛题:制作万年历法二

/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 作 者:王颖 * 完成日期:2014 年 2 月 16 日 * 版 本 号...

万年历源码

// 万年历.cpp : Defines the entry point for the console application. // 显示1900年以后任何年份的日历,日历以月份顺序排列,每月以星...

C++万年历

用C++写了个简易的万年历。 具体功能如下:1.打印指定年(用户输入)所有月份的年历                            2.打印指定年指...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)