C语言函数调用及定义

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1第5讲函数函数的定义及调用2主要内容函数无参无返回值函数有参无返回值函数有参有返回值函数函数间数据传递整数类型整数变量的定义整数的运算整数的输入和输出整数在函数间传递P84~P95第4章函数用户自定义函数4.2.1函数定义函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义。如scanf()等函数自定义函数:用户根据需要定义。如cylinder()函数main()是一个主函数,C程序由一个main()或多个函数构成程序中一旦调用了某个函数,该函数就会完成特定功能,然后返回到调用它的地方。除主函数外一般函数都不能单独运行。函数经过运算,得到一个明确结果,并需要回送该结果--有返回值函数。例,函数cylinder()返回圆柱的体积。函数完成一系列操作步骤,不需要回送任何运算结果--无返回值函数:1.无参无返回值函数2.有参无返回值函数P25一般有参用户自定义函数函数定义:编制独立功能的程序函数声明:主调函数调用前声明函数调用:主调函数调用被调用函数函数执行:运行被调用函数注:不能独立运行45写自己的函数--用户自定义函数voidtriangle(void){printf(*\n);printf(***\n);printf(*****\n);}无返回值函数void函数的作用仅仅是执行一系列的指令打印1.无参无返回值函数定义p87一般形式void函数名(void){函数体}6void函数名(){函数体}voidtriangle(void){printf(*\n);printf(***\n);printf(*****\n);}voidtriangle(){printf(*\n);printf(***\n);printf(*****\n);}或P4无参无返回值的函数的声明p87一般形式:void函数名(void);voidtriangle(void);主调函数告诉编译系统用户自定义函数的存在编译系统在检查被调函数时要知道调用信息包括:函数名,参数,返回类型。仅仅声明了“函数名”7P4无参无返回值的函数的调用一般形式:函数名();上例:triangle();写一个主函数,调用“triangle”函数,打印图形。#includestdio.hvoidmain(void){voidtriangle();/*函数声明*/triangle();}voidtriangle(){printf(*\n);printf(***\n);printf(*****\n);}8P4/*aprogramtooutputatriangle*/#includestdio.hvoidtriangle(void);main(){printf(Abouttoprintatriangle\n);triangle();printf(Thatwasit!\n);}voidtriangle(void){printf(*\n);printf(***\n);printf(*****\n);}9例:sample01_04.c函数声明(主函数前)p84(2)函数调用函数定义调用自定义函数,()中可不包括任何内容,但()一定要写。可放在main函数之前,也可放在main函数的后面。但不能放在main函数的函数体中,函数和函数之间地位是平等的,没有嵌套关系。只有嵌套调用。告诉编译器,存在这样一个用户自定义的函数,及它的调用方法:名称、参数、返回值。主调函数被调函数预处理10执行流程程序的执行顺序从main函数开始执行,执行完main函数即结束执行。遇到调用函数,转向执行被调函数,执行完被调函数后,返回调用函数的调用处,继续向下执行。程序的书写顺序与执行顺序有关--顺序执行。分支或循环会改变顺序函数的书写顺序与执行顺序无关函数定义若写在函数调用之前,函数声明可省略,但不主张。#includestdio.hvoidmain(void){voidtriangle();triangle();}voidtriangle(){printf(*\n);printf(***\n);printf(*****\n);}#includestdio.hvoidtriangle(){printf(*\n);printf(***\n);printf(*****\n);}voidmain(void){triangle();}11完成画简图(女孩)的程序打印图形女孩房子男孩12sample01_03.c完成画基本组件的函数画一个圆画一个横线画一个平行线画一个交叉线完成画三角形的函数画一个交叉线画一个横线在main函数中调用子函数完成画小女孩画一个圆画三角形画一个交叉线13完成画基本组件的函数/*Drawacircle*/voiddraw_circle(void){printf(*\n);printf(**\n);printf(**\n);}Draw绘画Circle圆/*Drawintersectinglines*/voiddraw_intersect(void){/*Use2\'stoprint1\*/printf(/\\\n);printf(/\\\n);printf(/\\\n);}intersectinglines相交线14完成画基本组件的函数/*Drawsabaseline*/voiddraw_base(void){printf(-------\n);}baseline基(横)线/*Drawaparallel*/voiddraw_parallel(void){printf(||\n);printf(||\n);}Parallel平行线15完成画三角形的函数/*Drawsatriangle*/voiddraw_triangle(void){draw_intersect();/*画相交线*/draw_base();/*画横线*/}画小女孩#includestdio.h/*functionprototypes*/voiddraw_circle(void);//圆voiddraw_intersect(void);//相交线voiddraw_base(void);//横线voiddraw_triangle(void);//三角形intmain(void){/*Drawacircle*/draw_circle();/*Drawatriangle*/draw_triangle();/*Drawintersectinglines*/draw_intersect();return0;}Function函数Prototype原型17执行示例main(画女孩)画圆画三角形画交叉线画交叉线画横线18思考main函数中三条语句功能还不明显,可增加一个函数draw_girl画小女孩请修改程序画女孩画圆画三角形画交叉线画交叉线画横线main19画小女孩函数/*Drawsagirl*/voiddraw_girl(void){/*Drawacircle.*/draw_circle();/*Drawatriangle.*/draw_triangle();/*Drawintersectinglines.*/draw_intersect();}20完成画小女孩程序#includestdio.h/*functionprototypes*/voiddraw_circle(void);voiddraw_intersect(void);voiddraw_base(void);voiddraw_triangle(void);voiddraw_girl(void);intmain(void){draw_girl();return0;}21改错题error1_6.cvoidmain(){printstar;sayHello(void);printstar;}voidprintStar(void){printf(“*******”);}voidsayHello(void){printf(“helloworld!”);}P2#includestdio.hvoidmain(){voidprintStar(void);voidsayHello(void);printStar();sayHello();printStar();}voidprintStar(void){printf(*******);}voidsayHello(void){printf(helloworld!);}2.有参无返回值函数定义P87void函数名(形参表)/*函数首部*/{函数实现过程/*函数体*/return;/*可以省略return*/}注:这类函数通常用于屏幕输出等表示不返回结果不能省略否则,函数类型被默认定义为int参数参数的作用——实现值的传递主调函数向被调函数传递值——实际参数(实参),被调函数处理所需要的数据。函数调用被调函数向主调函数传递值——形式参数(形参),被调函数向主调函数传递被调函数运行结果的数据。函数定义3.有参有返回值函数定义程序解析-计算圆柱体积【例】输入圆柱体的高h和半径r,求圆柱体积,volume=π*r2*h。要求定义并调用函数cylinder(r,h)计算圆柱体的体积。cylinder圆柱体volume体积/*计算圆柱体积*/1.#includestdio.h2.intmain(void)3.{4.doubleheight,radius,volume;5.doublecylinder(doubler,doubleh);/*函数声明*/6./*函数类型函数名类型名称类型名称*/7./*实参表*/8.printf(Enterradiusandheight:);9.scanf(%lf%lf,&radius,&height);10./*调用函数,返回值赋给volume*/11.volume=cylinder(radius,height);12.printf(Volume=%.3f\n,volume);13.return0;14.}【例】源程序Cylinder函数/*函数定义:求圆柱体积*/doublecylinder(doubler,doubleh)/*函数类型函数名类型名称类型名称*//*形参表*/{doubleresult;result=3.1415926*r*r*h;/*计算体积*/returnresult;/*返回结果*/}Enterradiusandheight:3.010Volume=282.743注:主函数完成输入输出1.返回运算结果的函数定义函数类型函数名(形参表)/*函数首部*/{函数实现过程/*函数体*/return表达式;}将函数运算的结果回送给主调函数注:只能返回一个值函数返回值的类型注:没有分号doublecylinder(doubler,doubleh){doubleresult;result=3.1415926*r*r*h;returnresult;}函数定义--形参类型1参数1,类型2参数2,……,类型n参数n参数之间用逗号分隔,每个参数前面的类型都必须分别声明函数类型函数名(形参表){函数实现过程return表达式;}不能写成doubler,hdoublecylinder(doubler,doubleh){doubleresult;result=3.1415926*r*r*h;returnresult;}P2课堂练习:定义判断奇偶数的函数even(n)inteven(intn)/*函数首部*/{if(n%2==0)/*判别奇偶数*/return1;/*偶数返回1*/elsereturn0;/*奇数返回0*/}分析:功能:判断奇偶数形式参数:整数n返回值:当n为偶数时返回1,否则返回0。函数类型函数名(参数表);voidtriangle(void);voidpyramid(intn);doublecylinder(doubler,doub

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功