欢迎来到天天文库
浏览记录
ID:58885840
大小:1.63 MB
页数:211页
时间:2020-09-30
《C语言第7章 函数与编译预处理ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第七章函数与编译预处理7.1模块化程序设计与函数7.2函数的定义与调用7.3函数的递归调用7.4数组作为函数参数7.5变量作用域与存储方式7.6编译预处理7.7函数设计举例教学目的和基本要求:要求学生了解模块化程序设计的思想,掌握函数的定义及调用,理解变量的作用域与存储方式的概念,理解编译预处理的概念。教学重点:函数的定义及调用、递归调用、变量的作用域。7.1模块化程序设计与函数在设计较复杂的程序时,我们一般采用的方法是:把问题分成几个部分,每部分又可分成更细的若干小部分,逐步细化,直至分解成很容易求解的小问题。这样的话,原来问题的解
2、就可以用这些小问题来表示。把复杂任务细分成多个问题的过程,就叫程序的模块化。模块化程序设计是靠设计函数和调用函数实现的。7.1.1模块与函数C语言程序由基本语句和函数组成,每个函数可完成相对独立的任务,依一定的规则调用这些函数,就组成了解决某个特定问题的程序。任务、模块与函数的关系:任务模块模块模块函数函数函数函数函数函数功能模块求解较小问题的算法和程序称作“功能模块”,各功能模块可以先单独设计,然后将求解所有子问题的模块组合成求解原问题的程序。图7-1模块结构图看这样一个问题:求[200,1000]的双胞胎数的总数。双胞胎数:两素数
3、差为2称为双胞胎数。这是编的程序。#include#includemain(){inta,b,n=0,,m,i;for(a=200;a<=998;a++){m=sqrt(a);for(i=2;i4、a或b)是否是素数。我们可以考虑用一个独立的函数来完成判断素数的功能,在主函数中调用此函数即可。如下:main(){inta,b,n=0;intf(intx);for(a=200;a<=998;a++){if(f(a)==1){b=a+2;if(f(b)==1)n++;}}printf(“%d”,n);}intf(intx){intI,m;m=sqrt(x)for(I=2;I5、。功能独立的子功能模块之间的关系简单使用独立变量模块规模适当分解模块要注意层次对问题抽象化设计时细化【例7-1】输入年月日,计算出该日为该年的第几天。主控模块判断闰年求某月的天数输出输入求总天数图7-2程序结构图程序实现:(1)判断闰年。intleap(intyear){intlp;lp=(year%4==0&&year%100!=06、7、year%400==0)?1:0;returnlp;}(2)求某月的天数。intmonth_days(intyear,intmonth){intds,d;switch(month){case1:cas8、e3:case5:case7:case8:case10:case12:d=31;break;case2:d=leap(year)?29:28;break;default:d=30;}returnd;}(3)求天数和。intdays(intyear,intmonth,intday){inti,ds=0;for(i=1;i9、intf("Inputyear-month-day:");scanf("%d-%d-%d",&year,&month,&day);t_day=days(year,month,day);printf("%d-%d-%dis%dthdayoftheyear!",year,month,day,t_day);}注意:在完整的程序中,前三个函数应放在main()函数之前。①程序结构清晰,可读性好。②减少重复编码的工作量。③可多人共同编制一个大程序,缩短程序设计周期,提高程序设计和调试的效率。使用函数的好处⑴一个C源程序可以由一个或多个源10、程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。⑵一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。⑶在一个C程序中,有且仅有一个主函数mai
4、a或b)是否是素数。我们可以考虑用一个独立的函数来完成判断素数的功能,在主函数中调用此函数即可。如下:main(){inta,b,n=0;intf(intx);for(a=200;a<=998;a++){if(f(a)==1){b=a+2;if(f(b)==1)n++;}}printf(“%d”,n);}intf(intx){intI,m;m=sqrt(x)for(I=2;I5、。功能独立的子功能模块之间的关系简单使用独立变量模块规模适当分解模块要注意层次对问题抽象化设计时细化【例7-1】输入年月日,计算出该日为该年的第几天。主控模块判断闰年求某月的天数输出输入求总天数图7-2程序结构图程序实现:(1)判断闰年。intleap(intyear){intlp;lp=(year%4==0&&year%100!=06、7、year%400==0)?1:0;returnlp;}(2)求某月的天数。intmonth_days(intyear,intmonth){intds,d;switch(month){case1:cas8、e3:case5:case7:case8:case10:case12:d=31;break;case2:d=leap(year)?29:28;break;default:d=30;}returnd;}(3)求天数和。intdays(intyear,intmonth,intday){inti,ds=0;for(i=1;i9、intf("Inputyear-month-day:");scanf("%d-%d-%d",&year,&month,&day);t_day=days(year,month,day);printf("%d-%d-%dis%dthdayoftheyear!",year,month,day,t_day);}注意:在完整的程序中,前三个函数应放在main()函数之前。①程序结构清晰,可读性好。②减少重复编码的工作量。③可多人共同编制一个大程序,缩短程序设计周期,提高程序设计和调试的效率。使用函数的好处⑴一个C源程序可以由一个或多个源10、程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。⑵一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。⑶在一个C程序中,有且仅有一个主函数mai
5、。功能独立的子功能模块之间的关系简单使用独立变量模块规模适当分解模块要注意层次对问题抽象化设计时细化【例7-1】输入年月日,计算出该日为该年的第几天。主控模块判断闰年求某月的天数输出输入求总天数图7-2程序结构图程序实现:(1)判断闰年。intleap(intyear){intlp;lp=(year%4==0&&year%100!=0
6、
7、year%400==0)?1:0;returnlp;}(2)求某月的天数。intmonth_days(intyear,intmonth){intds,d;switch(month){case1:cas
8、e3:case5:case7:case8:case10:case12:d=31;break;case2:d=leap(year)?29:28;break;default:d=30;}returnd;}(3)求天数和。intdays(intyear,intmonth,intday){inti,ds=0;for(i=1;i9、intf("Inputyear-month-day:");scanf("%d-%d-%d",&year,&month,&day);t_day=days(year,month,day);printf("%d-%d-%dis%dthdayoftheyear!",year,month,day,t_day);}注意:在完整的程序中,前三个函数应放在main()函数之前。①程序结构清晰,可读性好。②减少重复编码的工作量。③可多人共同编制一个大程序,缩短程序设计周期,提高程序设计和调试的效率。使用函数的好处⑴一个C源程序可以由一个或多个源10、程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。⑵一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。⑶在一个C程序中,有且仅有一个主函数mai
9、intf("Inputyear-month-day:");scanf("%d-%d-%d",&year,&month,&day);t_day=days(year,month,day);printf("%d-%d-%dis%dthdayoftheyear!",year,month,day,t_day);}注意:在完整的程序中,前三个函数应放在main()函数之前。①程序结构清晰,可读性好。②减少重复编码的工作量。③可多人共同编制一个大程序,缩短程序设计周期,提高程序设计和调试的效率。使用函数的好处⑴一个C源程序可以由一个或多个源
10、程序文件组成。C编译系统在对C源程序进行编译时是以文件为单位进行的。⑵一个C源程序文件可以由一个或多个函数组成。所有函数都是独立的。主函数可以调用其它函数,其它函数可以相互调用。⑶在一个C程序中,有且仅有一个主函数mai
此文档下载收益归作者所有