编程代码 | C++/也能制作出万年历,精美万年历制作分享

前言:本文章向大家介绍如何用C语言代码实现万年历使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

void输出万年历(int年, int月, int日)

{

    intr = 1, z = r, nn = 年, yy = 月;

    nn = 年; yy = 月;

    while(nn)if(--yy)z += 返回月的天数(nn, yy); else--nn, yy = 13;

    nn = 返回月的天数(年, 月); yy = 1;

    cout << 年 << "年"<< 月 << "月"<< 日 << "日今天星期 "<< (z + 日 - 1) % 7 << "\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六\n.\t";

    while(r <= nn)

    if(yy >= (z %= 7))

        cout << (r > 9 ? "": "0") << r++ << ((++yy % 7) ? "\t": "\t\n");

    else

        cout << (r > 1 && r <= 9 ? "0": "") << (r > 1 ? to_string(r++) : ".") << ((++yy % 7) ? "\t": "\t\n");

    cout << endl;

}

#include <atltime.h>

    CTime time(CTime::GetCurrentTime());

    SYSTEMTIME timeDest;

    time.GetAsSystemTime(timeDest);

    输出万年历(timeDest.wYear, timeDest.wMonth, timeDest.wDay);

void输出万年历(int年, int月, int日)

{

    intr = 1, z = r, nn = 年, yy = 月;   string aa[] = { "日", "一", "二", "三", "四", "五", "六"};

    nn = 年; yy = 月;

    while(nn)if(--yy)z += 返回月的天数(nn, yy); else--nn, yy = 13;

    nn = 返回月的天数(年, 月); yy = 1;

    cout << 年 << "年"<< 月 << "月"<< 日 << "日今天星期"<< aa[(z + 日 - 1) % 7] << "\n日\t一\t二\t三\t四\t五\t六\n.\t";

    while(r <= nn)

    if(yy >= (z %= 7))

        cout << (r > 9 ? "": "0") << r++ << ((++yy % 7) ? "\t": "\t\n");

    else

        cout << (r > 1 && r <= 9 ? "0": "") << (r > 1 ? to_string(r++) : ".") << ((++yy % 7) ? "\t": "\t\n");

    cout << endl;

}


staticint返回月的天数(intN, intY)

{//缘由https://bbs.csdn.net/topics/395074486

    return(Y == 2 ? (((((N % 4) == 0 && (N % 100) > 0) || (N % 400) == 0) ? true: false) ? 29 : 28)

        : (((Y <= 7 && (Y % 2) > 0) || (Y > 7 && (Y % 2) == 0)) ? 31 : 30));

}

staticvoid输出万年历(int年, int月, int日)

{

    intr = 1, z = r, nn = 年, yy = 月; string[] aa = { "日", "一", "二", "三", "四", "五", "六"};

    nn = 年; yy = 月;

    while(nn > 0) if(--yy > 0) z += 返回月的天数(nn, yy); else{ --nn; yy = 13; }

    nn = 返回月的天数(年, 月); yy = 1; z %= 7;

    Console.Write("{0}年{1}月{2}日今天星期{3}\n日\t一\t二\t三\t四\t五\t六\n::\t", 年, 月, 日, "日一二三四五六"[(z + 日 - 1) % 7]);

    while(r <= nn)

        if(yy >= z)

            Console.Write("{0}{1}{2}", (r > 9 ? "": "0"), (r++).ToString(), ((++yy % 7) > 0 ? "\t": "\t\n"));

        else

            Console.Write("{0}{1}{2}", (r > 1 && r <= 9 ? "0": ""), (r > 1 ? (r++).ToString() : "::"), ((++yy % 7) > 0 ? "\t": "\t\n"));

}

    输出万年历(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day); Console.WriteLine();


void输出万年历(int年, int月, int日)

{

    intr = 1, z = r, nn = 年, yy = 月; string s = "日一二三四五六";

    while(nn)if(--yy)z += 返回月的天数(nn, yy); else--nn, yy = 13;

    nn = 返回月的天数(年, 月); yy = (z + 日 - 1) % 7 * 2;

    cout << 年 << "年"<< 月 << "月"<< 日 << "日"<< ends << "星期"; cout.put(s[yy]).put(s[yy + 1]) << endl;

    cout << "日"<< ends << "一"<< ends << "二"<< ends << "三"<< ends << "四"<< ends << "五"<< ends << "六";

    yy = 0;

    while(r <= nn)

    if(yy >= (z %= 7))

    if(!(yy++ % 7))cout << endl << (r > 9 ? "": "0") << r++ << ends; elsecout << (r > 9 ? "": "0") << r++ << ends;

    else

    if(!(yy++ % 7))cout << endl << "::"<< ends; elsecout << (r > 1 && r <= 9 ? "0": "") << (r > 1 ? to_string(r++) : "::") << ends;

    cout << endl;

}


void输出万年历(int年, int月, int日)

{

    intr = 1, z = r, nn = 年, yy = 月;

    string 星期[] = { "日", "一", "二", "三", "四", "五", "六"};

    while(nn)if(--yy)z += 返回月的天数(nn, yy); else--nn, yy = 13;

    nn = 返回月的天数(年, 月); yy = 0;

    cout << 年 << "年"<< (月 > 9 ? "": "0") << 月 << "月"<< (日 > 9 ? "": "0") << 日 << "日星期"<< 星期[(z + 日 - 1) % 7] << endl;

    while(yy < 7)cout << 星期[yy++] << ends; yy = 0;

    while(r <= nn)

        if(yy >= (z %= 7))

            if(!(yy++ % 7))cout << endl << (r > 9 ? "": "0") << r++ << ends; elsecout << (r > 9 ? "": "0") << r++ << ends;

        else

            if(!(yy++ % 7))cout << endl << "::"<< ends; elsecout << (r > 1 && r <= 9 ? "0": "") << (r > 1 ? to_string(r++) : "::") << ends;

    cout << endl;


usingSystem.Globalization;//农历

        staticstring 月历加载()

        {

            System.Globalization.ChineseLunisolarCalendar 微软农历 = newSystem.Globalization.ChineseLunisolarCalendar();

            int天 = 微软农历.GetDayOfMonth(newDateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)),

            月 = 微软农历.GetMonth(newDateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day)),

            年 = 微软农历.GetSexagenaryYear(DateTime.Now);

            return"月历:"+ " 甲乙丙丁戊己庚辛壬癸"[微软农历.GetCelestialStem(年)]

                            + " 鼠牛虎兔龙蛇马羊猴鸡狗猪"[微软农历.GetTerrestrialBranch(年)] + "年"

                            + " 正二三四五六七八九十冬腊"[月] + (天 > 10 ? "月": "月初") + (" 十廿仨"[天 / 10]).ToString().Replace(" ", "") + " 一二三四五六七八九"[天 % 10];

        }

        staticvoid输出万年历(int年, int月, int日)

        {

            intr = 1, z = r, nn = 年, yy = 月; string aa = "  :::: ";

            Func<int, string> 补零 = (int数据) => { return(数据 > 9 ? "": "0"); };

            while(nn > 0) if(--yy > 0) z += 返回月的天数(nn, yy); else{ --nn; yy = 13; }

            nn = 返回月的天数(年, 月); yy = 1; z %= 7;

            //Console.WriteLine("{0}", 月历加载());

            Console.Write("{0}年"+ 补零(月) + "{1}月"+ 补零(日) + "{2}日星期{3}  {4}\n天 一 二 三 四 五 六\n:: ", 年, 月, 日, "天一二三四五六"[(z + 日 - 1) % 7], 月历加载(年, 月, 日));

            while(r <= nn)

                if(yy >= z)

                {

                    if(r <= 返回月的天数(年, 月)) aa += 月历加载(年, 月, r).Substring(8, 2) + ((++yy % 7) > 0 ? " ": " \n");

                    Console.Write("{0}{1}{2}", 补零(r), (r++).ToString(), ((yy % 7) > 0 ? " ": " "));

                    if(aa.Contains("\n")) { Console.Write("{0}", aa = aa.Replace("  ", " ")); aa = "  "; }

                }

                else

                {

                    if(r <= 返回月的天数(年, 月)) aa += (r > 1 ? 月历加载(年, 月, r).Substring(8, 2) : "::::") + ((yy % 7) > 0 ? " ": " \n");

                    Console.Write("{0}{1}{2}", (r > 1 ? 补零(r) : ""), (r > 1 ? (r++).ToString() : "::"), ((++yy % 7) > 0 ? " ": " \n"));

                    if(aa.Contains("\n")) { Console.Write("{0}", aa = aa.Replace("  ", " ")); aa = "  "; }

                }

        }

Stopwatch 总运行时间 = Stopwatch.StartNew();

Console.WriteLine("\n时间: {0}周期结束。", 总运行时间.ElapsedTicks); 

  • 0
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

普通网友

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值