北京电子科技职业学院.ppt

上传人:za****8 文档编号:13198021 上传时间:2020-06-07 格式:PPT 页数:38 大小:375.01KB
返回 下载 相关 举报
北京电子科技职业学院.ppt_第1页
第1页 / 共38页
北京电子科技职业学院.ppt_第2页
第2页 / 共38页
北京电子科技职业学院.ppt_第3页
第3页 / 共38页
点击查看更多>>
资源描述
项目3,万年历总课时:20课时,任务概述,分阶段完成一个万年历的项目.根据输入的年月输出该月的月历.阶段划分:假设一个月有31天,这个月的1日是星期天,打印该月的月历.假设一个月有31天,输入这个月的一号是星期几,打印该月的月历。输入一个月有多少天,输入这个月的一号是星期几,打印该月的月历.如何判断一个月有多少天?如何根据年份判断该年是否是闰年.(闰年的2月有29天)如何判断指定年月的一号是星期几?综合前面五个阶段的任务,完成一个完整的的万年历的项目.完成项目报告.,新知识点,逻辑运算符ifelse分支结构switch开关语句函数的简单应用,技能知识点,判断分支语句循环语句switch开关语句函数变量、运算符和表达式,教学过程与课时分配,学生分组讨论这个项目应该如何完成.分几个阶段,每个阶段用什么方法完成,抛开c语言,用自然语言描述这个问题的步骤。并详细的描述每一个步骤的解决方法(2课时)引导学生完成前三个阶段任务。(上机课时2小时)讲解ifelse双分支判断语句。(2课时)第四阶段任务-判断是否是闰年。(1课时)第五阶段任务-根据输入的年份和月份求得该月有多少天。(2课时)讲解多分支选择语句。(2课时)讲解switch语句。(2课时)第六阶段任务-根据输入的年份和月份求得该月的1号是星期几。(1课时)整合程序,形成一个完成的项目。(2课时)总结,语法复习(2课时),项目简介,项目名称万年历项目简介:输入年、月,打印月历。,项目分析,分组讨论这个项目应该如何完成.分几个阶段,每个阶段用什么方法完成,抛开c语言,用自然语言描述这个问题的步骤。(wordppt)按组展示自己的讨论结果,解决方法。(教师机)互评。,小结阶段划分,假设一个月有31天,这个月的1日是星期天,打印该月的月历.假设一个月有31天,输入这个月的一号是星期几,打印该月的月历。输入一个月有多少天,输入这个月的一号是星期几,打印该月的月历.如何判断一个月有多少天?如何根据年份判断该年是否是闰年.(闰年的2月有29天)如何判断指定年月的一号是星期几?综合前面五个阶段的任务,完成一个完整的的万年历的项目.,阶段任务1打印傻月历,假设这个月有31天,1日是星期日,打印这个月的月历,如下图所示。,分析任务,分组讨论:如何完成这个问题?,小结完成任务的方法,使用循环,输出131的整数。数与数之间有一定间隔。每行输出7个,输出7个数之后要换行。如何换行?取余的用法。,完成任务,现场编程。,关键代码,printf(日一二三四五六n);for(i=1;i=31;i+)printf(“%4d”,i);/输出的数之间要有一定间隔if(i%7=0)/每行输出7个数printf(n);,延伸:课后编程,求1100之间所有能被3整除的数,每行输出5个。,阶段任务2,假设一个月有31天,从键盘输入该月1日是星期几,打印该月月历。,分析任务,分组讨论:如何完成这个问题?提示:与阶段任务1有什么区别?,小结完成任务的方法,一个数占固定输出位数x,1日是星期几,那么输出1之前,就要先输出几个x的空格。除第一行外,其他每行仍然是输出7个,输出7个数之后要换行。此时如何换行?如果输出x个空格算是一个数,那么第一行也是7个数。如何理解?,完成任务,现场编程。,关键代码,printf(“n假设这个月有31天,请输入这个月的一号是星期几:(0-6)(星期天用0);scanf(%d,阶段任务3,输入一个月有多少天,输入这个月的一号是星期几,打印该月的月历.分析:定义两个变量,一个存放一个月的天数,一个存放1号是星期几。完成,阶段任务4,如何确定一个月的天数输入一个月份后,能够求得这个月份的天数,并将天数存放到变量monthday中。,任务分析,分组讨论135781012月:31天46911月:30天2月?闰年:29天平年:28天,如何确定是否是闰年,闰年的条件,满足下面两个条件之一:年份能够被4整除,但不能被100整除能够被400整除.表达式year%4=0,判断分支语句双分支选择语句,if(year%4=0,确定monthday,判断分支语句如果(month是1,3,5,7,8,10,12)monthday=31;否则如果(month是4,6,9,11)monthday=30;否则if(year是闰年)monthday=29;elsemonthday=28,判断分支语句多分支选择语句,确定monthday的参考代码,if(month=1|month=3|month=5|month=7|month=8|month=12)monthday=31;elseif(month=4|month=6|month=9|month=11)monthday=30;else/2月if(year%4=0,使用多分支选择语句解决这个问题的缺点,缺点:条件看起来很罗嗦.使用了很多的逻辑运算符使语句看起来很复杂,不简洁.特点:条件都是一些等值的判断跟我们学习多分支选择语句时的例题(有多少钱买什么车)有不同,例题是区间的判断.C语言提供了另外一种结构,可以很方便的解决这个问题.就是switch结构。,判断分支语句switch语句,用switch结构确定monthday,switch(month)case1:case3:case5:case7:case8:case10:case12:monthday=31;break;case4:case6:case9:case11:monthday=30;break;case2:if(year%4=0,小结,请讨论二者的不同?,阶段任务5,如何求一个月的1日是星期几?,如果已知一个月的1号是星期几,以这个月为基准,想打印的月份的1号到基准月的1号之前的天数是能算出来的。假设所求月的1号是dw,基准月的1号是ww,总天数是totalday,则dw=(ww+totalday)%7。我们以1980年1月为基准月,1980年1月1日是星期二。则ww2知道了公式,剩下的工作是求天数totalday,,任务分解,求总天数totalday套公式求打印月的1日是星期几dw,如何求指定月到基准月的天数totalday?,分组讨论,算法描述,假设要打印月历的年为year,月为month总天数可以分为两部分:1980年1月1日到year共过了多少个整年,一年有多少天?(365or366)year年的1月到month月之前过了多少个整月。每个月有多少天(这个问题早就解决了),上机完成阶段任务5,独立完成演示代码,讨论,关键代码,/先求过的整年的天数:假设不考虑闰年的情况,那么1年365天,(如果是闰年,1年366)for(i=1980;iyear;i+)totalday+=365;/如果这些年中有闰年,那么有几个闰年,总天数要加几for(i=1980;iyear;i+)if(i%4=0,整合5个阶段的任务,形成完整项目,我们完成了一个项目,有收获吗?,分组展示项目,说明自己的特色。,项目展示与总结,团队合作的重要对所学知识的灵活应用动脑筋去想能够先写出算法、画出流程图,再用c语言去实现。算法是我们解决问题的灵魂。编程语言是我们解决问题的工具。调试程序、发现错误、改正错误的能力。,知识点总结,正确定义变量输入输出函数双分支选择语句switch语句for循环语句函数的简单使用,分析项目,提出新的问题,解决方法:模块化的编程方法,代码段的重用。,代码段的重复,相同功能的重复实现求一个月的天数判断一年是否是闰年,程序杂乱无章不容易调试重复工作,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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