资源描述:
《函数与宏定义课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第六章函数与宏定义§6.1函数概念§6.2变量作用域和存储类型§6.3内部函数与外部函数§6.4递归函数设计和调用§6.6综合范例2021/7/311例1-3#includeintadd(intx,inty);main(){inta,b,c;printf(“pleaseinputvalueofaandb:”);scanf(“%d%d”,&a,&b);c=add(a,b);printf(“sum=%d”,c);}intadd(intx,inty){returnx+y;}2021/7/312§6.1函数概
2、念C语言允许把问题设计成一个一个的模块,程序通过调用模块功能来解决问题。这些模块通常都是通过函数来实现的,又可称其为函数模块。C语言中,函数可分为两类:函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义如scanf()、printf()等函数自定义函数:需要用户自己定义2021/7/313函数的组织使用结构化程序设计方法解决复杂的问题把大问题分解成若干小问题,小问题再进一步分解成若干更小的问题写程序时,用main()解决整个问题,它调用解决小问题的函数这些函数又进一步调用解决更小问题的函数,从而形成函数的
3、嵌套调用2021/7/314main()函数1函数2……函数m函数1_1函数1_2函数m_1函数m_n……程序结构2021/7/315main()也是一个函数,C程序由一个main()或多个函数构成。程序中一旦调用了某个函数,该函数就会完成一些特定的工作,然后返回到调用它的地方。1、函数经过运算,得到一个明确的运算结果,并需要回送该结果。例如,函数add()返回两个数的和。2、函数完成一系列操作步骤,不需要回送任何运算结果。2021/7/316程序解析-计算圆柱体积例6-1输入圆柱体的高和半径,求圆柱体积,volume=π
4、*r2*h。要求定义和调用函数cylinder(r,h)计算圆柱体的体积。2021/7/317例6-1源程序/*计算圆柱体积*/#includeintmain(void){doubleheight,radius,volume;doublecylinder(doubler,doubleh);/*函数声明*/printf("Enterradiusandheight:");scanf("%lf%lf",&radius,&height);/*调用函数,返回值赋给volume*/volume=cylinder(ra
5、dius,height);printf("Volume=%.3f",volume);return0;}2021/7/318例6-1源程序/*定义求圆柱体积的函数*/doublecylinder(doubler,doubleh){doubleresult;result=3.1415926*r*r*h;/*计算体积*/returnresult;/*返回结果*/}Enterradiusandheight:3.010Volume=282.7432021/7/319§6.1.1函数定义函数定义的一般形式可以有两种。形式一:[存储
6、类型符][返回值类型符]函数名([形参说明表]){函数语句体}形式二:[存储类型符][返回值类型型符]函数名([形参表])形参说明;{函数语句体}2021/7/3110函数定义1:intabs_sum(intm,intn){if(m<0)m=-m;if(n<0)n=-n;return(m+n);}函数定义2:intabs_sum(m,n)intm,n{if(m<0)m=-m;if(n<0)n=-n;return(m+n);}2021/7/31111.返回运算结果的函数定义函数类型函数名(形参表)/*函数首部*/{/*函数体
7、*/函数实现过程return表达式;}把函数运算的结果回送给主函数只能返回一个值函数返回值的类型没有分号doublecylinder(doubler,doubleh){doubleresult;result=3.1415926*r*r*h;returnresult;}2021/7/3112形参类型1参数1,类型2参数2,……,类型n参数n参数之间用逗号分隔,每个参数前面的类型都必须分别写明函数类型函数名(形参表){函数实现过程return表达式;}不能写成doubler,hdoublecylinder(doubler,do
8、ubleh){doubleresult;result=3.1415926*r*r*h;returnresult;}2021/7/3113doublecylinder(doubler,doubleh)/*函数首部*/{/*函数体,写在一对园括号内*/doubleresult;result=3.141592