项目十 数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)

2023-07-31
| 20页
| 143人阅读
| 5人下载
普通

内容正文:

项目十 数组和函数综合应用──打印日历 学习目标 继续熟悉数组的使用。 继续熟悉函数的使用。 了解程序算法设计及N-S流程图。 综合使用数组和函数完成程序设计。 本项目来编写一个简单实用的小程序:打印年历。这个程序的功能是:由用户输入一个年号,然后就可以分月输出当年的年历。 项目十 数组和函数综合应用──打印日历 项目十 数组和函数综合应用──打印日历 任务一 分析程序算法 任务二 确定每个月的天数 任务三 确定当年的每天是星期几 任务四 设计数据存储方式,生成各月日历 任务五 设计打印格式,输出日历 任务六 完成整个程序 任务一 分析程序算法 N-S流程图也叫“盒图”,这种流程图去掉了传统流程图中带箭头的流程线,全部算法写在矩形框内,使流程图显得更加紧凑,适合结构化程序设计。N-S流程图表示的程序三种基本结构如下: 任务一 分析程序算法 (1)顺序结构 (2)选择结构 (3)循环结构 任务一 分析程序算法 程序算法分析 整个程序可以大致分为两个主要部分:输入年份、打印该年的日历。见图中的①。 打印日历时,为了清楚地知道打印的是哪一年的日历,先打印年份,然后从1月~12月,分别打印各月份的名称(英文缩写),然后打印星期的名称(英文缩写),最后再打印当月的日历。见图中的②。 要打印某月的日历,首先必须生成当月日历,然后再打印。见图中的③。 生成每一个月的日历,需要知道当月有多少天,当月每一天是星期几,然后生成当月日历并保存。见图中的④。 要知道每月有多少天是比较容易的,除了2月份外,其他月份的天数都是确定的,关键就是确定2月份有几天。见图中的⑤。 如果当年是闰年,则2月份有29天,否则,2月份为28天。见图中的⑥。 要想确定当月每一天是星期几,需要知道当年第一天是星期几,然后类推,每7天一个周期。见图中的⑦。 经过以上的4~7步,可以生成日历,然后,设计存储格式,保存生成的日历。 设计好输出格式,打印已生成的日历即可。见图中的⑧ 任务一 分析程序算法 经过综合和细化,最终就可以得到整个程序的N-S流程图 以上的分析过程使用了进行程序设计的一个重要方法——“从上到下,逐步求精”的方法。这个方法是解决复杂问题的一种常用方法。 对于较复杂的程序,可以把功能分解,每个小功能用一个函数实现,使程序的总体结构更加清晰。 在这个程序中,应考虑使用以下4个函数。 函数1:“int leapyear(int year)”,判断“year”是否为闰年。 函数2:“void print2(int month,int t)”,按月打印日历。 函数3:“void calendar(int year)”,按月生成日历。 函数4:“main()”主函数。 任务一 分析程序算法 按功能划分函数 任务二 确定每个月的天数 int leapyear(int year) /*函数1:判断year是否为闰年*/ {if ((year%4==4)&&(year%100)!=0||(year%400==0)) return 1; else return 0;} 使用一维整型数组“monthday[]”来存放每各月的天数: int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 如果是闰年,则2月份有29天: if ((year%4==0)&&(year%100!=0)||(year%400==0)) monthday[2]=29; 为了提高程序的可读性,实现程序的模块化设计,对闰年的判断设计成函数“leapyear()” 任务三 确定当年的每天是星期几 确定每天是星期几,关键是判断当年的1月1日是星期几。 对于输入的年号year,year年的1月1日是星期几可以用下列公式计算: 当年第1天是星期几判断出来了,就可依次推算以后的日子是星期几了。 todayweek=[year+(year-1)/4-(year-1)/100+(year-1)/400]%7 任务四 设计数据存储方式,生成各月日历 int month2[6][7]; 设计数据存储方式 使用一维整型数组“monthday”存放每个月的天数: int monthday[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 使用二维字符型数组“monthname”存放每个月的英文名称: Char monthname[13][6]={"","JAN","FEB","MAR","APR","MAY", "JUNE","JULY","AUG","SEP",

资源预览图

项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
1
项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
2
项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
3
项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
4
项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
5
项目十  数组和函数综合应用──打印日历(课件)-高二《程序设计基础》同步教学(人民邮电版)
6
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。