C语言编写方案-万年历.pdf

上传人:奔*** 文档编号:93497995 上传时间:2023-07-07 格式:PDF 页数:22 大小:2.70MB
返回 下载 相关 举报
C语言编写方案-万年历.pdf_第1页
第1页 / 共22页
C语言编写方案-万年历.pdf_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《C语言编写方案-万年历.pdf》由会员分享,可在线阅读,更多相关《C语言编写方案-万年历.pdf(22页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、难 易 程 度 中 等 开 发 语 言 C开 发 工 具 操 作 系 统:Windows XP或 更 高 开 发 平 台:VC+6.0关 键 字 万 年 历 C 语 言 程 序 设 计 课 程 综 合 案 例-案 例 0 6 万 年 历 6.1 需 求 分 析 本 系 统 提 供 给 用 户 一 个 万 年 历 查 询 平 台,用 来 查 询 1900-2050年 任 何 一 个 月 的 月 历。在 使 用 本 系 统 的 过 程 中,用 户 除 了 可 以 查 看 到 公 历 数 据 外,还 可 以 查 看 相 应 的 农 历 数 据。要 查 询 的 年 份 和 月 份 可 以 从 键 盘

2、直 接 输 入,另 外 还 可 以 输 入 1和 2 来 增 加 和 减 少 年 份,输 入 3 和 4 来 增 加 和 减 少 月 份。6.1.1 功 能 概 述 如 图 6-1所 示,系 统 主 要 功 能 有:1.显 示 当 前 日 期 和 时 间,以 及 星 期 信 息。2.显 示 要 查 询 的 某 年 某 月 的 月 历,包 括 公 历 数 据 以 及 其 相 应 的 农 历 数 据,如:天 干 地 支、生 肖、节 气 等。3.要 查 询 的 年 份 和 月 份 可 以 从 键 盘 直 接 输 入,也 可 以 通 过 输 入“1 4”四 个 数 字 键 来 增 加 减 少 年 份

3、和 月 份 的 方 法 查 询。6.1.2 系 统 运 行 环 境 一、硬 件 环 境 处 理 器:Intel Pentium 166 MX 或 更 高 内 存:32MB 硬 盘 空 间:1GB 显 卡:SVGA显 示 适 配 器 二、软 件 环 境 操 作 系 统:Windows 98/ME/2000/XP6.1.3 功 能 需 求 描 述 万 年 历 查 询 平 台 为 用 户 提 供 简 单 方 便 的 日 期 查 询 功 能,给 出 完 整 清 晰 的 日 期 信 息。本 系 统 需 要 实 现 的基 本 功 能 如 下:1.取 得 系 统 当 前 时 间:取 得 系 统 当 前 的

4、日 期、时 间 及 星 期 信 息。2.判 断 某 年 是 否 为 闰 年。3.得 到 阳 历 某 月 的 天 数 以 及 某 年 的 总 天 数 等 信 息。4.判 断 某 年 月 日 为 星 期 儿。5.得 到 某 个 具 体 日 期 的 农 历 数 据,包 括 农 历 日 期、天 干 地 支、节 气 等 信 息。2 I C C 语 言 课 程 通 源 库 建 设 张 静 提 交 的 文 档 课 程 案 例,案 例 九 万 年 历 源 程 序 万 年 历 D.t 年 2、1年 3、t 月 4、1 月 5、E xit万 年 历 今 天 是:2011年 1 1月 0 9日 2 0:5 1:5

5、4星 期 三 公 历:2 0 i i年 i i 月 建 国 62年 农 历:年 卯 年【兔】星 期 日 星 期 一 星 期 二 星 期 三 星 期 四 星 期 五 星 期 六 一 八 五 三 的 十 心 十 等,07十 14十 21廿 28初 二 九 六 四 六 三 十 七 五 01初 08十 15廿 22廿 29初 如 初 翠 芸 券 八 五 二 九 04初 11十 18廿 25月 冬 九 六 三 大 十 七 四 二 05初 12十 19廿 26初 请 输 入:你 可 以 输 入 年 份 1900-2050,也 可 以 输 入 i-5,二 1图 6-1 万 年 历 界 面 6.2总 体 设

6、计 6.2.1 系 统 流 程 描 述 系 统 的 流 程 描 述 如 图 6-2所 示。6.2.2 功 能 模 块 设 计 根 据 功 能 需 求 描 述,定 义 如 下 函 数:void TIME():取 得 系 统 当 前 时 间:int leap(int year):返 回 阳 历 某 年 的 天 数,闰 年 返 回 366天,平 年 返 I口 I 365天;int day(int month):返 回 阳 历 当 月 的 天 数;int get_solar_total(int solar_year,int solar_month):返 回 1900 年 01 月 01 日 到 M 年

7、 M 月 的 天 数;int get_week(int solar_year,int solar_month):返 回 M 年 M 月 的 1 号 为 星 期 几;int get_lunar_info(int solar_year,int solar_month,Lunar_info*l_info,Chinese_era*china_era):返 回 农 历 信 息;int out_chinese(Lunar_info*l_info,char*chinese_str):输 出 农 历 日 期 信 息;void sub_menue():界 面 输 出。.算 农 历 信 息 一 算 阳 历 信 息

8、 图 6-2系 统 流 程 图 6.2.3数 据 结 构 设 计 一、农 历 信 息 数 据 结 构 typedef struct(int lunar_year;农 历 年 份 int lunajmonth;农 历 月 份 int lunar_day;农 历 日 期 int current_mday;本 月 天 数 int leap_month;本 年 闰 月 int leap_flag;/H 月 标 记Lunar_info;二、公 历 信 息 数 据 结 构 typedef struct(int era_year;阳 历 年 份 int era_month;/ffi 历 月 份 int er

9、a_day;阳 历 日 期 Chinese_era;三、数 组 用 来 定 义 相 关 的 农 历 信 息,如 天 干 地 支、节 气、生 肖、农 历 日 和 月 等 数 据。1.1900-2050年 的 农 历 数 据 int lunar_infolJ=(0 x04bd8,0 x04ae0,0 x0a570,0 x054d5,0 x0d260,0 x0d950,0 x16554,0 x056a0,0 x09ad0,0 x055d2,0 x04ae0,0 x0a5b6,0 x0a4d0,0 x0d250,0 xld255,0 x0b540,0 x0d6a0,0 x0ada2,0 x095b0,

10、0 xl4977,0 x04970,0 x0a4b0,0 x0b4b5,0 x06a50,0 x06d40,0 xlab54,0 x02b60,0 x09570,0 x052f2,0 x04970,0 x06566,0 x0d4a0,0 x0ea50,0 x06e95,0 x05ad0,0 x02b60,Ox 186e3,0 x092e0,0 x lc8d7,0 x0c950,0 x0d4a0,0 x 1 d8a6,0 x0b550,0 x056a0,0 x 1 a5b4,0 x025d0,0 x092d0,0 x0d2b2,0 x0a950,0 x0b557,0 x06ca0,0 x0b55

11、0,0 xl 5355,0 x04da0,0 x0a5b0,Ox 14573,0 x052b0,0 x0a9a8,0 x0e950,0 x06aa0,0 x0aea6,0 x0ab50,0 x04b60,0 x0aae4,0 x0a570,0 x05260,0 x0f263,0 x0d950,0 x05b57,0 x056a0,0 x096d0,0 x04dd5,0 x04ad0,0 x0a4d0,0 x0d4d4,0 x0d250,0 x0d558,0 x0b540,0 x0b6a0,0 xl95a6,0 x095b0,0 x049b0,0 x0a974,0 x0a4b0,0 x0b27a,

12、0 x06a50,0 x06d40,0 x0af46,0 x0ab60,0 x09570,0 x04af5,0 x04970,0 x064b0,0 x074a3,0 x0ea50,0 x06b58,0 x055c0,0 x0ab60,0 x096d5,0 x092e0,0 x0c960,0 x0d954,0 x0d4a0,0 x0da50,0 x07552,0 x056a0,0 x0abb7,0 x025d0,0 x092d0,0 x0cab5,0 x0a950,0 x0b4a0,0 x0baa4,0 x0ad50,0 x055d9,0 x04ba0,0 x0a5b0,0 x 15176,0

13、x052b0,0 x0a930,0 x07954,0 x06aa0,0 x0ad50,0 x05b52,0 x04b60,0 x0a6e6,0 x0a4e0,0 x0d260,0 x0ea65,0 x0d530,0 x05aa0,0 x076a3,0 x096d0,0 x04bd7,0 x04ad0,0 x0a4d0,0 xld0b6,0 x0d250,0 x0d520,0 x0dd45,0 x0b5a0,0 x056d0,0 x055b2,0 x049b0,0 x0a577,0 x0a4b0,0 x0aa50,0 xlb255,0 x06d20,0 x0ada0,0 xl4b63);数 据

14、格 式 说 明:数 组 中 的 每 一 个 数 字 都 是 一 个 由 5 位 十 六 进 制 数 组 成 的 数 字,例:04bd8。第。位 表 示 当 年 有 无 闰 月,有 的 话 为 闰 月 的 月 份,没 有 的 话,为 0;第 1、2、3 位 转 换 成 二 进 制 共 12位,如:01001011 1101表 示 年 中 的 1 2个 月 分 别 有 多 少 天(1 为 3 0天,0 为 2 9天);第 4 位 表 示 闰 月 是 大 月 还 是 小 月,仅 当 存 在 闰 月 的 情 况 下 有 意 义。例 如:1980年 的 数 据 是:0 x095b0其 二 进 制 为:0

15、000 1001 0101 1011 0000表 示 1980年 没 有 闰 月,从 1 月 到 12月 的 天 数 依 次 为:30、29、29、30、29、30、29、30、30、29、30、30o2.天 干、地 支、生 肖、节 气 等 char Gan103=甲 乙,丙 丁,戊,己 庚,辛,壬 癸;/*地 支*/charZhi123=子 丑,寅 卯,辰,巳 丫 午,未 丫 申,酉 戌,亥;/*生 肖*/(3 市 1 皿 应 123=鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/*24节 气*/char solar_term24 5=(小 寒,大 寒,立 春,雨 水,惊 蛰,春 分”,

16、清 明,谷 雨,立 夏,”小 满,芒 种,夏 至,小 暑,大 暑,立 秋,处 暑,白 露,秋 分,寒 露,霜 降,立 冬,小 雪,大 雪,冬 至;/*农 历 日*/char chinese_day305=(初 一,初 二,初 三,初 四,初 五,初 六,初 七,初 八,初 九,初 十,十 一,“十 二,十 三,十 四,十 五,十 六,“十 七,十 八,十 九,廿 十,廿 一,廿 二,廿 三,廿 四,廿 五,廿 六 廿 七,廿 八,廿 九,卅-;char build4 5=光 绪,宣 统,民 国,建 国;/*农 历 月*/char chinese_month125=正 二,“三,四 五,六,七

17、八,九,十 冬,腊;6.3详 细 设 计 6.3.1 程 序 预 处 理 头 文 件 calendar.h包 含 上 节 所 描 述 的 所 有 数 据。具 体 清 单 如 下:#include#include#include#include#include#include#define YUANDAN 1typedef struct(int lunajyear;农 历 年 份 ini lunajmonth;农 历 月 份 inthinajday;农 历 日 期 int current_mday;本 月 大 数 ini leap_monlh;本 年 闰 月 int leap_flag;/IJ

18、月 标 记 Lunar_info;typedef struct(ini era_year;阳 历 年 份 int era_month;阳 历 月 份 int era_day;阳 历 日 期 Chinese_era;int s_year;int s_month;int s_day;static int t_year;static short today=YUANDAN;/*1900-2050年 的 农 历 数 据*/int lunar_info=0 x04bd8,0 x04ae0,0 x0a570,0 x054d5,0 x0d260,0 x0d950,0 xl6554,0 x056a0,0 x0

19、9ad0,0 x055d2,0 x04ae0,0 x0a5b6,0 x0a4d0,0 x0d250,0 xld255,0 x0b540,0 x0d6a0,0 x0ada2,0 x095b0,0 xl4977,0 x04970,0 x0a4b0,0 x0b4b5,0 x06a50,0 x06d40,0 xlab54,0 x02b60,0 x09570,OxO52f2,0 x04970,0 x06566,0 x0d4a0,0 x0ea50,0 x06e95,0 x05ad0,0 x02b60,Ox 186e3,0 x092e0,0 x 1 c8d7,0 x0c950,0 x0d4a0,0 x 1

20、d8a6,0 x0b550,0 x056a0,0 x 1 a5b4,0 x025d0,0 x092d0,0 x0d2b2,0 x0a950,0 x0b557,OxO6caO,OxOb550,0 x15355,0 x04da0,0 x0a5b0,0 x14573,0 x052b0,0 x0a9a8,0 x0e950,0 x06aa0,0 x0aea6,0 x0ab50,0 x04b60,0 x0aae4,0 x0a570,0 x05260,0 x0f263,0 x0d950,0 x05b57,0 x056a0,0 x096d0,0 x04dd5,0 x04ad0,0 x0a4d0,0 x0d4d

21、4,0 x0d250,OxOd558,0 x0b540,0 x0b6a0,Ox 195a6,0 x095b0,0 x049b0,0 x0a974,0 x0a4b0,0 x0b27a,0 x06a50,0 x06d40,0 x0af46,0 x0ab60,0 x09570,0 x04af5,0 x04970,0 x064b0,0 x074a3,0 x0ea50,0 x06b58,0 x055c0,0 x0ab60,0 x096d5,0 x092e0,0 x0c960,0 x0d954,0 x0d4a0,0 x0da50,0 x07552,0 x056a0,0 x0abb7,0 x025d0,0

22、x092d0,0 x0cab5,0 x0a950,0 x0b4a0,0 x0baa4,0 x0ad50,0 x055d9,0 x04ba0,0 x0a5b0,0 x 15 176,0 x052b0,0 x0a930,0 x07954,0 x06aa0,0 x0ad50,0 x05b52,0 x04b60,0 x0a6e6,0 x0a4e0,0 x0d260,0 x0ea65,0 x0d530,0 x05aa0,0 x076a3,0 x096d0,0 x04bd7,0 x04ad0,0 x0a4d0,0 xld0b6,0 x0d250,0 x0d520,0 x0dd45,0 x0b5a0,0 x

23、056d0,0 x055b2,0 x049b0,0 x0a577,0 x0a4b0,0 x0aa50,0 xlb255,0 x06d20,0 x0ada0,0 xl4b63;/*天 干*/char Gan103=甲 乙,丙,丁 戊,己,庚 辛,壬,癸;/*地 支*/charZhi123=”子 丑,寅,卯 辰,巳 午,未 申,酉,戌 丁 亥;/*生 肖*/市 0江 23=鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪;/*24节 气*/char solar_term245=“小 寒,“大 寒,立 春,雨 水,惊 蛰,春 分”,清 明,谷 雨,立 夏,小 满,芒 种,夏 至,小 暑,大 暑,立 秋

24、,处 暑,白 露,秋 分,寒 露,霜 降,立 冬,小 雪,大 雪,冬 至;/*农 历 日*/char chinese_day30J5J=“初 一,初 二,初 三,初 四,初 五,初 六,初 七,“初 八,初 九,初 十,十 一,十 二,十 三,十 四,十 五,十 六,“十 七,十 八,十 九,廿 十,廿 一,廿 二,廿 三,廿 四,廿 五,廿 六,廿 七,廿 八,廿 九 卅 十”);char build4 5=光 绪,宣 统,民 国,建 国;/*农 历 月*/charchinese_month12H5=正 二,三,四 五,六,七 八,“九,十 冬,腊;6.3.2计 算 所 查 询 日 期 的

25、公 历 数 据 主 要 功 能 有:取 得 系 统 的 当 前 日 期、时 间 和 星 期 信 息;判 断 某 年 是 否 闺 年 并 返 回 当 年 的 天 数;返 回 1900年 0 1月 0 1日 到 M 年 M 月 的 天 数;返 回 M 年 M 月 的 1号 为 星 期 几。代 码 清 单 如 下:#include calendar.h函 数 功 能:取 得 系 统 当 前 时 间 入 口 参 数:无 出 口:系 统 当 前 时 间 调 用 方 式:如 T IM E()返 回 系 统 当 前 时 间 void TIME()static char*week口=日,一 二,“三,四 五,

26、六;time_t t;struct tm*tp;t=time(NULL);tp=locaitime(&t);printf(%d 年 02d 月 02d I I”,tp tm_year+1900,tp-tm_mon+l,tp-tm_mday);printf(u%02d:%02d:%02d,tp-tm_hour,tp-tm_min,tp-tm_sec);printf(星 期 5吊 H,weektp-tm_wday);)函 数 功 能:延 迟 刷 新 时 间 入 口 参 数:n:秒 出 口:对 应 秒 数 调 用 方 式:如 buffer(2)返 回 2 秒 后 执 行 下 操 作 void buf

27、fer(int n)time_t start,end;start=time(NULL);end=time(NULL);while(end-startn)end=time(NULL);函 数 功 能:返 回 阳 历 某 年 的 天 数,闰 年 返 回 3 6 6天,平 年 返 回 3 6 5天 入 口 参 数:year:公 历 年 出 口:对 应 天 数 调 用 方 式:如 用 ap(2000)返 回 366天 int leap(int year)(if(year%4=0&year%100!=0llyear%400=0)return 366;else return 365;函 数 功 能 描 述

28、:返 叵 1阳 历 当 月 的 天 数 入 口 参 数:month:公 历 月 出 口:对 应 天 数 调 用 方 式:如 d a y(l)返 回 3 1天 int day(int month)(if(monlh=lllmonth=3llmon 由=5llmonth=7llmomh=8llmonth=10llmonth=12)return 31;if(month=4llmonth=6llmonth=9llmonth=11)return 30;if(month=2&leap(s_year)=366)return 29;else return 28;)函 数 功 能:返 回 1900年 0 1月

29、0 1 日 到 M 年 M 月 的 天 数 入 口 参 数:s_year,s_month:年 份 和 月 份 出 口:M 年 M 月/900-01-01调 用 方 式:如 get_solar_total(2000,01)返 回 36555 天int get_solar_total(int solar_year,int solar_month)(int total;int temp_num;total=0;for(temp_num=1900;temp_numsolar_year;temp_num+)total+=leap(temp_num);for(temp_num=l;temp_numsola

30、r_month;temp_num+)total+=day(temp_num);return total;函 数 功 能:返 回 M 年 M 月 的 1 号 为 星 期 几,以 1900.01.01为 基 准 1为 星 期 I入 口 参 数:s_year,s_month:年 份 和 月 份 出 口:M 年 M 月 的 一 号 是 星 期 几 调 用 方 式:如 get_week(2OOO01)返 回 星 期 六 int get_week(int solar_year,int solar_month)(int week;int total;/*1900.01.01 为 星 期 一*/week=2;

31、total=get_solar_total(solar_year,solar_month);total%=7;week=week+total;week%=7;if(week=0)week=7;return week;6.3.3计 算 所 查 询 日 期 的 农 历 数 据 主 要 功 能 有:计 算 农 历 当 年 总 天 数,当 月 天 数,判 断 某 年 是 否 存 在 农 历 的 闰 月 及 闰 月 的 天 数 等,代 码 清 单 如 下:函 数 功 能:确 定 是 否 存 在 农 历 的 闰 月 入 口 参 数:lunar_year:年 份 出 口:是 否 存 在 闰 月 调 用 方

32、式:如 get eap_month(1982)返 叵 I存 在 闰 4 月 int get_leap_month(int lunar_year)return lunar_infolunar_year-1 900&0 xf;函 数 功 能:若 存 在 闰 月,返 回 闰 月 的 天 数,30?29入 口 参 数:lunar_year:年 份 出 口:存 在 的 是 大 月 还 是 小 月 调 用 方 式:如 get_leap_month_day(1982)返 回 30 天 int get_leap_month_day(int lunar_year)if(get_leap_month(lunar_

33、year)return(lunar_infolunar_year-1900&0 x 10000)730:29);elsereturn(O);函 数 功 能:确 定 农 历 当 月 天 数,30?29入 口 参 数:Iunar_year,lunar_month:年 份 和 月 份 出 口:存 在 的 是 大 月 还 是 小 月 调 用 方 式:$0 get_lunar_month_total(1982,4)返 回 30 天 int get_lunar_month_total(int lunar_year,int lunar_month)return(lunar_infolunar_year-19

34、00&(0 x 10000lunar_month)?30:29);函 数 功 能:农 历 当 年 总 天 数,354?355入 口 参 数:lunar_year:年 份 出 口:一 年 的 总 天 数 调 用 方 式:如 gelJunar_year_total(1982)返 回 355 天 int get_lunar_year_total(intiunar_year)int sum=348;/*348=29*12*/for(i=0 x8000;i0 x8;i=l)sum+=(lunar_infolunar_year-1900&i)?1:0;return(sum+get_leap_month_d

35、ay(lunar_year);函 数 功 能:确 定 天 干 地 支 入 口 参 数:num:年 份 1864,str:表 示 天 干 地 支 的 字 符 串 出 口:干+支 调 用 方 式:如 get_chinese_era(2007-1864,s tr)返 回 str=*T亥 void get_chinese_era(int num,char*str)strcpy(str,Gannum%10);strcat(str,Zhinum%12);6.3.4输 出 农 历 信 息 根 据 以 上 计 算 的 农 历 数 据 返 回 农 历 信 息 并 输 出 农 历 信 息。代 码 清 单 如 下:

36、/*返 回 农 历 信 息*/int get_lunar_info(int solar_year,int solar_month,Lunar_info*l_info,Chinese_era*china_era)int total;int temp_num;/*阳 历 1900年 0 1月 3 1日 为 农 历 1900年 0 1月 0 1日*/total=get_solar_total(solar_year,solar_month)-30;china_era-era_day=total+40;/*将 1 3和 1 4月 作 为 下 一 年 的 1月 和 2 月,便 于 确 定 Y 年 M 月

37、D 日 是 星 期 几 蔡 勒 公 式 求 星 期 几:W=C/4 2C+y+y/4+13X(M+l)/5+d/*/china_era-era_month=14;for(i=1 900;i=0;i+)(/*temp_num记 录 从 1900到 2050年 闰 年 和 平 年 的 天 数*/temp_num=get_lunar_year_total(i);total-=temp_num;/*累 计 月*/china_era-era_month+=12;)l_info-lunar_year=i;if(totallunar_year;china_era-era_month-=12;)/*1864年

38、 为 农 历 甲 子 年*/china_era-era_year=l_info-lunar_year-1864;/*返 回 是 否 存 在 闰 月*/l_info-leap_month=get_leap_month(l_info-lunar_year);l_info-leap_flag=0;for(i=l;i0;i+)(if(l_info-leap_month0&i=(l_info-leap_month+1)&l_info-leap_flag=0)-i;temp_num=get_leap_month_day(l_info-lunar_year);/*存 在 闰 月 为 l_info-leap_

39、fiag=1;elsetemp_num=get_lunar_month_total(l_info-lunar_year,i);if(l_info-leap_flag=1&i=(l_info-leap_month+1)l_info-leap_flag=0;total-=temp_num;if(l_info-leap_flag=0)china_era-era_month+4-;)if(total=0&l_info-leap_month0&i=l_info-leap_month+1)if(l_info-leap_flag=1)l_info-leap_flag=0;else(l_info-leap_f

40、lag=1;-i;-china_era-era_month;)if(totalera_mon th;)l_info-lunar_momh=i;l_info-lunar_day=total+1;if(l_info-leap_flag=0)l_info-current_mday=get_lunar_month_total(l_info-lunar_yearj_info-lunar_month);elsel_info-current_mday=get_leap_month_day(l_info-lunar_year);return 0;)/*输 出 农 历 日 期 信 息*/int out_chin

41、ese(Lunar_info*l_info,char*chinese_str)(/*初 一 不 打 印*/if(I_info-lunar_day!=1)strcpy(chinese_str,chinese_dayl_info-lunar_day-1);if(l_info-lunar_day=15&Linfo-lunar_month=1)strcpy(chinese_str,元 宵 节”);if(l_info-lunar_day=5&l_info-lunar_month=5)strcpy(chinese_str,”端 午 节)if(l_info-lunar_day=7&l_info-lunar_

42、month=7)strcpy(chinese_str,情 人 节”);i f(l_i nfo-l unar_day=15&l_info-lunar_month=7)strcpy(chinese_str,中 元 节”);if(l_info-lunar_day=15&l_info-lunar_month=8)strcpy(chinese_str,中 秋 节”);if(l_info-lunar_day=9&l_info-lunar_month=9)strcpy(chinese_str,重 阳 节”);if(l_info-lunar_month=12)(if(l_info-lunar_day=30)s

43、trcpy(chinese_str,除 夕)if(l_info-current_mdaylunar_day=29)strcpy(chinese_str,除 夕);if(l_info-lunar_day=8)strcpy(chinese_str,腊 八 节)if(l_info-lunar_day=23)strcpy(chinese_str,小 年”);)else(if(l_info-leap_flag=l)(如 果 存 在 闰 月 就 将 汉 字 闰 复 制 到 数 组 里,再 连 接 农 历 月 份 strcpy(chinese_str,闰);strcat(chinese_str,chines

44、e_monthll_info-lunar_month-l J);strcat(chinese_str,“月);elseif(l_info-lunar_month=1)strcpy(chinese_str,春 节”);else(strcpy(chinese_str,chinese_monthl_info-lunar_month-1);strcat(chinese_str,“月”);if(get_lunar_month_total(l_info-lunar_year,l_info-lunar_month)=30)strcat(chinese_str,“大);elsestrcat(chinese_s

45、tr,dn);)return 0;)6.3.5系 统 界 面 输 出 代 码 清 单 如 下:/*界 面 输 出*/void sub_menue()(int week,s_month_total,space_num,c_num;int i,j,flag;char tmp_str9;Chinese_era c_ear;Lunar_info l_info;/*每 个 月 一 号 为 星 期 几*/week=get_week(s_year,s_month);/*返 回 当 月 的 天 数*/s_month_total=day(s_month);/*将 已 开 辟 内 存 空 间 imp_str的 首

46、 sizeof(lmp_str)个 字 节 的 值 设 为 值 0,作 用 在 于 可 以 方 便 的 清 空 结 构 类 型 的 数 组 或 变 量。*/memset(&c_ear,0,sizeof(c_ear);memset(&l_info,0,sizeof(l_info);/*返 回 农 历 信 息*/get_lunar_info(s_year,s_month,&l_info,&c_ear);memset(tmp_str,0,sizeof(tmp_str);/*确 定 干 支*/get_chinese_era(s_year-1864,tmp_str);if(s_year=1949)(中

47、华 人 民 共 和 国 纪 年 t_year=s_year-1949;flag=3;)else if(s_year 1911)(民 国 纪 年 t_year=s_year-1911;flag=2;)else if(s_year 1908)(宣 统 纪 年 t_year=s_year-1908;flag=l;)else(光 绪 纪 年 t_year=s_year-1874;flag=0;)system(clsH);n);1 n);pilHUV。(printf(tl、t 年 I 万 年 历 pnnti(t|printf(t2 l 年 1TIME();今 天 是:);1 n);printf(1 n)

48、;pnntr(t I 1 n);printf(Mt3 t 月 1 公 历:%d 年 0 2 d月%s%3 d年 农 历:%s 年 s】1 n,s_year,s_month,buildflag,t_year,tmp_str,Animals(s_year-1864)%12);printf(Mt|-I nM);printf(t4、I 月 I 星 期 日 星 期 一 星 期 二 星 期 三 星 期 四 星 期 五 星 期 六 I n);printf(t I-I n);printf(t5.Exit I);space_num=week;for(i=l;ispace_num;i+)(printf();)c_

49、num=0;for(i=l;i7)ll(i=s_month_total)(week=1;printf(nn I);if(i7)(for(j=l;jspace_num;j+)(printf();)week=space_num;)elseweek=1;while(l)(week+=l;memset(tmp_str,0,sizeof(tmp_str);out_chinese(&l_info,tmp_str);printf(M%6s“,tmp_str);if(l_info.lunar_day 12)(l_info.lunar_month=1;/*月 数 大 于 12进 年*/l_info.lunar_

50、year=l_info.lunar_year+l;)/*返 回 闰 月 的 天 数*/l_info.current_mday=get_lunar_month_total(l_info.lunar_year,l_info.1 u nar_month);l_info.leap_flag=0;)l_info.lunar_day=l;c_num+;if(week7)ll(c_num=s_month_total)(week=l;printf(n I);break;)elseprintf(M”);elseprintf(H”);printf(”n);printf(t-n);6.3.5主 函 数 代 码 清

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com