c语言作业年历显示思路6,c语言程序设计年历显示

1 13 计算机科学与技术学院 课程设计报告 2012 2013 学年第 一 学期 课程名称 C C 高级语言程序设计课程设计 设计题目 年历显示 学生姓名 学 号 专业班级 指导教师 2012 年 9 月 20 日 1 13 目目 录录 一 课程设计问题描述一 课程设计问题描述 1 1 课程设计题目课程设计题目 1 2 设计任务要求设计任务要求 1 二 总体设计二 总体设计 1 1 总体思路总体思路 1 2 遇到的问题遇到的问题 1 3 问题的解决问题的解决 1 4 大概的流程图大概的流程图 1 三 详细设计三 详细设计 3 1 显示输入年份的日历显示输入年份的日历 3 2 显示所查询月份的日历显示所查询月份的日历 4 3 判断当天是星期几 是否为法定假日判断当天是星期几 是否为法定假日 4 四 运行结果测试与分析四 运行结果测试与分析 5 1 输出结果输出结果 5 2 分析分析 7 五 结论与心得五 结论与心得 7 1 13 一 课程设计问题描述一 课程设计问题描述 1 课程设计题目课程设计题目 年历显示 2 设计任务要求设计任务要求 功能要求 1 输入一个年份 输出是在屏幕上显示该年的日历 假定输 的年份在 1940 2040 年之间 2 输入年月 输出该月的日历 3 输入年月日 输出距今天还有多少天 星期几 是否是公历节日 二 总体设计二 总体设计 1 总体思路总体思路 想要实现输出某年的日历 必须知道一个常识 那就是公元一年一月一日是 星期一 这是一个重要的切入点 如果知道了这一点 那问题就迎刃而解了 我们可以先计算出公元一年一月一日到这年一月一日之前的总天数 这用 for 语句较易实现 不过要注意到平年与闰年的区别 有了总天数 再除以 7 余 数是什么 那这年的一月一日就是星期几 如此依次写出一月的日历 然后一 月的天数加上总天数得到的结果再除以 7 如此知道二月一日是星期几 写出 二月的月历 如此便可以依次写出一到十二月的日历 至于输入年月 输出该 月的日历 思路相同 至于判断是否为公历节日 用一个 if 语句便可实现 2 遇到的问题遇到的问题 1 函数的调用与套用 具体来说就是如何在一个构造的函数中调用另一个构 造函数 2 把每月的日历设计的美观 如何让星期和下面的数字对齐 3 如何把握日历的前几天的空格 使每月的第一天正好对在它应该的星期 下 3 问题的解决问题的解决 第一个问题我通过查书 需要先把调用的函数在该构造函数中声明 至于第 二和第三个问题 都是通过反复调试 反复修改 最后基本达到了要求 4 大概的流程图大概的流程图 2 13 开始 输入你查询 的年份 输入年月输入年月日 和当前日期 how where how where how where why when 输出该年的日历输入所查询月份 的日历 判断所输入的年 份是否为闰年 结束 判断当天是星期几 是否为法定假日 3 13 三 详细设计三 详细设计 1 显示输入年份的日历显示输入年份的日历 当我们输入年份任意公元后的年份 year 时 可以通过一个 for 语句 算出 从公元一年到 year 1 年的总天数 这其中要注意平年与闰年的区别 平年 365 天 闰年是 366 天 把这一部分用 how 函数表示 算出总天数 Z 后 用 Z 除 以 7 余数是 d 则 year 这一年的一月一日便是星期 d 如此则一月的日历可表 示出来 然后把 Z 加上一月的天数 tian 得到的新值赋给 Z 再用 Z 除以 7 重 新得到新的余数 d 如此可知二月的第一天是星期几 可表示出二月的日历 依 次循环 用 for i 0 i 12 i 语句可表示出该年的日历 注意闰年二月是 29 天 平年是 28 天 开始 输入 year S 0 i 1 是否为闰 年 S S 366S S 365 NY i i year 4 13 2 显示所查询月份的日历显示所查询月份的日历 当我们输入 year 和 month 时 同上 用 how 函数算出公元一年一月一日 到 year 1 年的总天数 Z 再用一个 for i 1 i month i 依次加上 1 月到 month 1 月的天数赋值给 Z 用 Z 除以 7 得余数 d 那本月的第一天便是星期几 便可表示 出本月的日历 3 判断当天是星期几 是否为法定假日判断当天是星期几 是否为法定假日 当我们输入 year month 和 day 同上 算出从公元一年一月一日到 month 1 月以前的总天数 Z 再加上 day 赋值给 Z 用 Z 除以 7 得余数 d 那本天便是星期 d 调用 when 函数 可判断本日是否是法定假日 输出 s 结束 5 13 四 运行结果测试与分四 运行结果测试与分 析析 1 输出结果输出结果 6 13 7 13 2 分析分析 8 13 在测试的过程中 基本都是一些语法上的缺陷 没有什么太大的逻辑错误 根据系统的提示 较易容易改正 还有就是在调试过程中 月份不够美观 基 本是前后左右不能对齐 中间的空格不易把握 不过 在反复的调试与修改之 后 最终实现了上面的效果 虽说不是太完美 也不至于太难看 五 结论与心得五 结论与心得 当我第一次看到这个程序问题时 感觉比较容易 就选择了它 可当我仔细 研究这个问题时 却傻了眼 没有我想象的那么简单 首先使我困惑的是每年 的第一天是星期几怎么计算 这使我郁闷了很久 一度没有头绪 后来 当我 和同学交流时 知道了公元一年一月一日是星期一 这才恍然大悟 后来思路 就有了 整个的过程也就想明白了 剩下的就是程序的编写与测试的过程了 在实际的编写过程中 也遇到了很多麻烦 不过 在一次次的调试与修改后 这些问题也一一克服 要说我编写的这个代码 也有许多不尽如人意处 最大的问题是我是按照 三个问题依次编下去 也就是说三个问题是连续的 如果你想要知道第三个问 题 必须从第一个问题开始做下去 一直到第三个问题 不能直接出现第三个问 题的结果 我一直在寻找一个办法 能够把三个问题分开 可很遗憾 直到现 在 也未能成功 通过这次编写这个代码 我知道了思考的重要性 也明白了做任何事都不 能轻易放弃 也不能轻易否决自己 多想想 多问一问 问题也许就解决了 附录附录 include int how int A int i s 0 day for i 1 i A 1 i if i 4 0 else day 365 s s day return s int where int B int C int tian switch C case 1 tian 31 break case 2 9 13 if B 4 0 else tian 28 break case 3 tian 31 break case 4 tian 30 break case 5 tian 31 break case 6 tian 30 break case 7 tian 31 break case 8 tian 31 break case 9 tian 30 break case 10 tian 31 break case 11 tian 30 break case 12 tian 31 break return tian void why int E switch E case 1 printf 该日星期一 n break case 2 printf 该日星期二 n break case 3 printf 该日星期三 n break case 4 printf 该日星期四 n break case 5 printf 该日星期五 n break case 6 printf 该日星期六 n break case 7 printf 该日星期日 n break void when int F int G if F 1 else printf 当天不是法定节日 void main int year d j Z di did m n D x y z h k l jian Z1 printf 输入你所查寻日历的年份 scanf d Z how year 10 13 for j 1 j 12 j d Z 7 printf n printf d 月份 n j printf sun mon tue wed thu fri sat n if d 6 for di 1 di d 1 di printf for did 1 did where year j did printf d did if did 10 printf else printf if did 6 d did 6 d 7 0 did where year j printf n Z Z where year j printf 输入所查日历的年月 scanf d d Z how m for j 1 j n 1 j D where m j Z Z D d Z 7 printf n printf d 月份 n j printf sun mon tue wed thu fri sat n if d 6 for di 1 di d 1 di printf for did 1 did where year j did printf d did if did 10 printf else printf if did 6 d did 6 d 7 0 did where year j 11 13 printf n printf 输入年月日 scanf d d d Z how x for j 1 j y 1 j D where x j Z Z D Z Z z printf 输入当前年月日 scanf d d d Z1 how h for j 1 j k 1 j D where k j Z1 Z1 D Z1 Z1 l jian Z1 Z printf 输入日期距今有 d 天 n jian d Z 7 why d when y z 函数释意函数释意 how 计算公元一年一月一日到输入年份之前的总天数的函数 where 实现判断每月天数的函数 when 实现判断输入日期是星期几的函数 why 实现判断输入日期是否为法定节日的函数

展开阅读全文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值