还剩3页未读,继续阅读
文本内容:
第章项目式案例5【例
5.1]编程序实现输入任意一个年份,求出从公元1年1月1日到上一年年末总共有多少天编程思路1若不考虑闰年,则每年为365天2求出从公元1年到上一年所经历的闰年个数,然后对应于每个闰年将总天数增加1天3据说现行的格里高利历是从1582年10月15日开始执行的,这对于总天数的计算会有影响吗?不会因为格里高利历修正了儒略历的误差,因此完全按格里高利历的规则进行计算,所得结果仍然是正确的源程序之一♦include stdio.h intmainvoid{int y,days;int i;请输入一个年份printf;,scanf%d y;;days=0;i=l whilei=y-l{ifi%4==0i%100!=0||i%400==0days=days+366;else days=days+365;i=i+l;”到上一年年末的总天数受,printf d\n”days;return0;源程序之二#include stdio.h intmainvoid{int y,days;int in;z”请输入一个年份:;printf%,scanf d“y;;n=0;i=l whilei=y-l/*统计闰年个数*/{ifi%4==0i%100!=0||i%400==0n=n+l;i=i+l;days=y-1*365+n;至!]上一年年末的总天数,printf=%d\n”days;return0;1源程序之三♦include stdio.h intmainvoid{int ydays;int n;z请输入一个年份:“;printfscanfn%dn,y;/*统计到上一年的闰年个数*/n=y-l/4-y-l/100+y-l/400;days=y-1*365+n;到上一年年末的总天数,printf=%d\n”days;return0;【例
5.2]编程序实现输入任意一个日期的年、月、日的值,求出从这一年的1月1日到这一天总共有多少天编程思路1首先求出从这一年的第一天到上月末的总天数,然后加上该日期中的日数即可2而到上月末的天数,可以通过循环累加的方式求得即将从一月份到上个月的天数累加求和源程序之一♦include stdio.h intmainvoid{int y,m ddays;int it;z zz”请输入一个年、月、日”;printf scanfn%d%d%dn y,m,d;zdays=0;for i=l;i=m-l;i++/*确定月份的天数*/{switchi i{case1:case3:case5:case7:case8:case10:case12:t=31;break;case4:case6:case9:case11:t=30;break;case2:ify%4==0y%100!=0||y%400==0t=29;else t=28;/大累加每个月的天数*/days=days+t;days=days+d;,”从年初到这一天的总天数=为小!1printf days;return0;源程序之二#include stdio.h intmainvoid{int y,m,d,days;int it;z”请输入一个年、月、日;printf”scanfn%d%d%dn,y,m,d;days=0;switchm-1{case11:days+=30;case10:days+=31;case9:days+=30;case8:days+=31;case7:days+=31;case6:days+=30;case5:days+=31;case4:days+=30;case3:days+=31;case2:ify%4==0y%100!=0||y%400==0days+=29;else days+=28;case1:days+=31;days=days+d;”从年初到这一天的总天数,printf Wd\n”days;return0;在该程序的switch语句中,case标号按照由大到小的顺序排列,而且所有的case分支均无break语句因此,当根据m-l的值选择某个分支后,将会依次执行其后所有case分支之后的累加语句,从而达到反复累加求和的效果【例
5.3]编程序实现输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天算法设计1首先输入一个年、月、日;2然后计算出到上一年年末的总天数;3再计算出到上一月月末的总天数;4最后计算出到这一天的总天数源程序#include stdio.h intmainvoid{int y,m,d,days;int”请输入一个年、月、日;printf”scanfn%d%d%dn,y,m,d;n=0;for i=l;i=y-l;i++/*统计闰年个数文/{if i%4==0i%100!=0I Ii%400==0n++;/*到上一年年末的总天数★//*确定月份days=y-1*365+n;fori=l;i++{switch ii的天数*/{case1:case3:case5:case7:case8:case10:case12:t=31;break;case4:case6:case9:case11:t=30;break;case2:ify%4==0y%100!=0|Iy%400==0t=29;else t=28;days=days+t;}days=days+d;“从公元年月日到这一天的总天数,printf111=%d\n”days;return0;【例
5.4]你知道你生日那天是星期几吗,还有你知道你爸爸生日那天是星期几吗?你可能会说“可以查万年历啊”然而,不查万年历你能计算出来吗?编程序实现输入任意一个日期的年、月、日的值,求出从公元1年1月1日到这一天总共有多少天,并求出这一天是星期几编程思路首先求出从公元第一天到给定日期的总天数,然后以总天数除以7求出的余数就是对应的星期数公元第一天按星期一计算卜算法设计1首先输入一个年、月、日;2计算出到上一年年末的总天数;3计算出到上一月月末的总天数;4计算出到这一天的总天数;5计算出这一天是星期几;6输出结果源程序♦include stdio.h intmainvoid{int y,m,d,days;int”请输入一个年、月、日”;printf scanfn%d%d%dn,y,m,d;n=0;fori=l;i=y-l;i++/*统计闰年个数*/{if i%4==0i%100!=0||i%400==0n++;/*到上一年年末的总天数*/days=y-1*365+n;/*计算到上月末的总天数*/for i=l;i=m-l;i++/*确定月份的天数文/{switch ii{case1:case3:case5:case7:case8:case10:case12:t=31;break;case4:case6:case9:case11:t=30;break;case2:ify%4==0y%100!=0||y%400==0t=29;elset=28;)/*将月份的天数累加到days=ciays+t;i days*/)/*将日期中的日数累加到days=days+d;days*/(从从公元年月日到这一天的总天数,)printf111=%d\n”days;w=days%7;(这一天是“);printf()switch w(星期日);{case0:printf\n”break;(星期一)case1:printf\n;break;(星期二);case2:printf\n”break;(“星期三)case3:printf\n;break;(星期四)case4:printf\n;break;(“星期五)case5:printf\n;break;(“星期六)case6:printf\n;break;)return0;。
个人认证
优秀文档
获得点赞 0