C语言函数调用及定义ppt课件.ppt

上传人:牧羊曲112 文档编号:1375799 上传时间:2022-11-16 格式:PPT 页数:37 大小:317KB
返回 下载 相关 举报
C语言函数调用及定义ppt课件.ppt_第1页
第1页 / 共37页
C语言函数调用及定义ppt课件.ppt_第2页
第2页 / 共37页
C语言函数调用及定义ppt课件.ppt_第3页
第3页 / 共37页
C语言函数调用及定义ppt课件.ppt_第4页
第4页 / 共37页
C语言函数调用及定义ppt课件.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《C语言函数调用及定义ppt课件.ppt》由会员分享,可在线阅读,更多相关《C语言函数调用及定义ppt课件.ppt(37页珍藏版)》请在三一办公上搜索。

1、1,第5讲 函数 函数的定义及调用,2,主要内容,函数无参无返回值函数有参无返回值函数有参有返回值函数函数间数据传递整数类型整数变量的定义整数的运算整数的输入和输出整数在函数间传递,P84P95第4章函数,用户自定义函数,4.2.1 函数定义,函数是指完成一个特定工作的独立程序模块。库函数:由C语言系统提供定义。如scanf()等函数自定义函数:用户根据需要定义。如cylinder()函数main()是一个主函数,C程序由一个main()或多个函数构成程序中一旦调用了某个函数,该函数就会完成特定功能,然后返回到调用它的地方。除主函数外一般函数都不能单独运行。函数经过运算,得到一个明确结果,并需

2、要回送该结果有返回值函数。例,函数cylinder()返回圆柱的体积。函数完成一系列操作步骤,不需要回送任何运算结果无返回值函数:1.无参无返回值函数2.有参无返回值函数,P25,一般有参,用户自定义函数,函数定义:编制独立功能的程序函数声明:主调函数调用前声明函数调用:主调函数调用被调用函数函数执行:运行被调用函数注:不能独立运行,4,5,写自己的函数用户自定义函数,void triangle (void) printf( *n); printf( *n); printf(*n); ,无返回值函数void函数的作用仅仅是执行一系列的指令,打印,1.无参无返回值函数定义 p87一般形式,voi

3、d 函数名(void) 函数体,6,void 函数名() 函数体,void triangle (void) printf( *n); printf( *n); printf(*n); ,void triangle () printf( *n); printf( *n); printf(*n); ,或,P4,无参无返回值的函数的声明 p87,一般形式:void 函数名(void );void triangle (void) ;主调函数告诉编译系统用户自定义函数的存在编译系统在检查被调函数时要知道调用信息包括:函数名,参数,返回类型。仅仅声明了“函数名”,7,P4,无参无返回值的函数的调用,一般形

4、式:函数名();上例:triangle();写一个主函数,调用“triangle ”函数,打印图形。,#include void main(void) void triangle();/*函数声明*/ triangle();void triangle () printf( *n); printf( *n); printf(*n); ,8,P4,/* a program to output a triangle*/ #include void triangle(void); main() printf(About to print a trianglen); triangle(); printf

5、(That was it!n); void triangle(void) printf( *n); printf( *n); printf(*n); ,9,例:sample01_04.c,函数声明(主函数前)p84(2),函数调用,函数定义,调用自定义函数,()中可不包括任何内容,但()一定要写。,可放在main函数之前,也可放在main函数的后面。但不能放在main函数的函数体中,函数和函数之间地位是平等的,没有嵌套关系。只有嵌套调用。,告诉编译器,存在这样一个用户自定义的函数,及它的调用方法:名称、参数、返回值。,主调函数,被调函数,预处理,10,执行流程,程序的执行顺序从main函数开始

6、执行,执行完main函数即结束执行。遇到调用函数,转向执行被调函数,执行完被调函数后,返回调用函数的调用处,继续向下执行。,程序的书写顺序与执行顺序有关顺序执行。分支或循环会改变顺序函数的书写顺序与执行顺序无关函数定义若写在函数调用之前,函数声明可省略,但不主张。,#include void main(void) void triangle(); triangle();void triangle () printf( *n); printf( *n); printf(*n); ,#include void triangle () printf( *n); printf( *n); printf

7、(*n); void main(void) triangle();,11,完成画简图(女孩)的程序,打印图形女孩房子男孩,12,sample01_03.c,完成画基本组件的函数画一个圆画一个横线画一个平行线画一个交叉线完成画三角形的函数画一个交叉线画一个横线,在main函数中调用子函数完成画小女孩画一个圆画三角形画一个交叉线,13,完成画基本组件的函数,/*Draw a circle*/void draw_circle(void) printf( * n); printf( * *n); printf( * * n);Draw 绘画 Circle 圆,/*Draw intersecting l

8、ines*/void draw_intersect(void) /* Use 2 s to print 1 */ printf( / n); printf( / n); printf( / n);intersecting lines相交线,14,完成画基本组件的函数,/*Draws a base line*/void draw_base(void) printf( -n);base line基(横)线,/*Draw a parallel*/void draw_parallel(void) printf(| |n); printf(| |n); Parallel 平行线,15,完成画三角形的函数

9、,/*Draws a triangle*/void draw_triangle(void) draw_intersect(); /*画相交线 */ draw_base(); /*画横线 */,画小女孩,#include /* function prototypes */void draw_circle(void);/圆void draw_intersect(void);/相交线 void draw_base(void);/横线 void draw_triangle(void);/三角形,int main(void) /* Draw a circle */ draw_circle(); /* D

10、raw a triangle */ draw_triangle(); /* Draw intersecting lines */ draw_intersect(); return 0;,Function 函数 Prototype 原型,17,执行示例,18,思考,main函数中三条语句功能还不明显,可增加一个函数draw_girl 画小女孩请修改程序,19,画小女孩函数,/* Draws a girl */void draw_girl(void) /* Draw a circle. */ draw_circle(); /* Draw a triangle. */ draw_triangle()

11、; /* Draw intersecting lines. */ draw_intersect();,20,完成画小女孩程序,#include /* function prototypes */void draw_circle(void);void draw_intersect(void); void draw_base(void); void draw_triangle(void); void draw_girl(void );,int main(void) draw_girl(); return 0;,21,改错题 error1_6.c,void main() printstar; say

12、Hello(void); printstar;void printStar(void)printf(“*”);void sayHello(void)printf(“hello world!”);,P2,#include void main() void printStar(void); void sayHello(void); printStar(); sayHello(); printStar();void printStar(void)printf(*);void sayHello(void)printf(hello world!);,2.有参无返回值函数定义P87,void 函数名(形参

13、表) /* 函数首部 */ 函数实现过程 /* 函数体 */ return; /*可以省略return */,注:这类函数通常用于屏幕输出等,表示不返回结果,不能省略否则,函数类型被默认定义为int,参数,参数的作用实现值的传递主调函数向被调函数传递值实际参数(实参),被调函数处理所需要的数据。函数调用被调函数向主调函数传递值形式参数(形参),被调函数向主调函数传递被调函数运行结果的数据。函数定义,3.有参有返回值函数定义 程序解析计算圆柱体积,【例】输入圆柱体的高h和半径r,求圆柱体积,volume=*r2*h。要求定义并调用函数cylinder (r, h )计算圆柱体的体积。,cylin

14、der圆柱体,volume体积,/* 计算圆柱体积 */#include int main( void ) double height, radius, volume;double cylinder (double r, double h); /* 函数声明*/ /*函数类型 函数名 类型 名称 类型 名称*/ /* 实参表 */printf (Enter radius and height: );scanf (%lf%lf, ,【例】源程序,Cylinder函数,/*函数定义:求圆柱体积 */double cylinder (double r, double h) /*函数类型 函数名 类型

15、 名称 类型 名称*/* 形参表 */ double result;result =3.1415926 * r * r * h; /* 计算体积 */return result; /* 返回结果 */,Enter radius and height: 3.0 10Volume = 282.743,注:主函数完成输入输出,1返回运算结果的函数定义,函数类型 函数名(形参表)/* 函数首部 */ 函数实现过程 /* 函数体 */ return 表达式;,将函数运算的结果回送给主调函数,注:只能返回一个值,函数返回值的类型,注:没有分号,double cylinder (double r, doub

16、le h) double result; result = 3.1415926 * r * r * h; return result;,函数定义形参,类型1 参数1 ,类型2 参数2 ,类型n 参数n参数之间用逗号分隔,每个参数前面的类型都必须分别声明,函数类型 函数名(形参表) 函数实现过程 return 表达式;,不能写成 double r, h,double cylinder (double r, double h) double result; result =3.1415926 * r * r * h; return result;,P2,课堂练习:定义判断奇偶数的函数even (n

17、),int even (int n)/* 函数首部 */if(n%2 = 0) /* 判别奇偶数 */return 1;/* 偶数返回1 */elsereturn 0;/* 奇数返回0 */,分析:功能:判断奇偶数形式参数:整数n返回值:当n为偶数时返回1,否则返回0。,函数类型 函数名(参数表);void triangle (void);void pyramid (int n);double cylinder (double r, double h);函数必须先定义后调用。如果自定义函数在主调函数的后面,就需要在函数调用前,加上函数原型声明。函数声明:说明函数的类型和参数的情况,以保证程序编

18、译时能判断对该函数的调用是否正确。书写位置:写在“main”里,函数体开始位置。写在“main”前。在主调函数前,函数(原型)声明,注:只写函数定义中的第1行(函数首部),并以分号结束。,无参无返回值函数声明,有参无返回值函数声明,有参有返回值,函数调用P89,函数定义后,可以在其它函数中调用该函数;或自己调用自己嵌套调用。调用C标准库函数时,在程序的最前面用#include命令包含相应的头文件。如:#include 调用自定义函数时,程序中必须有与调用函数相对应的函数声明。double cylinder (double r, double h);volume = cylinder (radi

19、us, height ); 函数调用,1.函数调用的形式和过程,使用(带)返回值:volume = cylinder (radius, height );printf(“%f n” , cylinder (radius, height );完成操作(无返回值):pyramid(5); /有参triangle (); /无参,常用于void类型函数的调用,常用于有返回结果的函数的调用,常量、变量、表达式,函数名(实参表),函数调用的过程,计算机在执行程序时,从主函数main开始执行,如果遇到某个函数调用,暂停执行主函数,转而执行相应的被调函数,该函数执行完后,将返回主函数,然后再从原先暂停的位置

20、继续执行。函数遇return或最后的大括号,返回主函数。,示意图,#include int main( void ) double height, radius, volume;double cylinder (double r, double h); printf (Enter radius and height: );scanf (%lf%lf, ,调用函数,实参形参,执行函数中的语句,返回调用它的地方,函数声明;结束,函数定义空格结束,分析函数调用的过程,2.参数传递P91,函数定义时的参数形式参数(简称形参)double cylinder (double r, double h);函数

21、调用时的参数实际参数(简称实参)volume = cylinder (radius, height);为形参分配存储单元实参形参的单向传递,实参把值复制给形参实参:常量、变量或表达式形参:变量,用于接受实参传递过来的值形参和实参一一对应:数量、类型和顺序均一致调用结束后释放形参存储单元;保留实参存储单元(值),3.返回函数运行结果P94,函数返回的两种情况完成确定运算,并返回该运算结果返回给主调函数。完成指定工作,没有确定的运算结果需返回给主调函数(函数类型void)。函数返回结果的一般形式:return 表达式; 如,return result; return (表达式);如, return

22、 (3.1415926 * r * r * h); 先求“表达式”值,再返回“表达式值”return语句结束函数运行带着运行结果返回主调函数,double cylinder (double r, double h)return 3.1415926 * r * r * h ; ,double cylinder (double r, double)double result;result =3.1415926 * r * r * h; return result ; ,课堂练习:1、请定义能够判断一整数奇偶性的函数even(n)。2、用户从键盘输入一个整数,主函数通过调用even(n)函数判断该数的奇偶性,并将判断结果打印输出。,#include int even (int n)/* 函数首部 */if(n%2 = 0) /* 判别奇偶数 */return 1;/* 偶数返回1 */elsereturn 0;/* 奇数返回0 */void main() int num,result; printf(n请输入一个整数:); scanf(%d,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号