收藏 分享(赏)

函数的定义声明调用.ppt

上传人:mcady 文档编号:8037322 上传时间:2019-06-05 格式:PPT 页数:47 大小:353KB
下载 相关 举报
函数的定义声明调用.ppt_第1页
第1页 / 共47页
函数的定义声明调用.ppt_第2页
第2页 / 共47页
函数的定义声明调用.ppt_第3页
第3页 / 共47页
函数的定义声明调用.ppt_第4页
第4页 / 共47页
函数的定义声明调用.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

1、,临沂大学汽车学院:韩晓翠,第7章 用函数实现模块化程序设计,授课要点,函数的定义、声明、调用、返回值 无参无返回值的函数 无参有返回值的函数 有参无返回值的函数 有参有返回值的函数,#include #include void main() /主函数 int iNo,b;printf(“input a number:n“); /输出函数scanf(“%d“, /输出函数 ,初识函数1,/*从键盘输入3个数,求和并输出。*/ #include int myAdd(int x,int y,int z) int s;s=x+y+z; return s; void main() /主函数 int i

2、No1,iNo2,iNo3,sum;printf(“input 3 numbers:n“);/输出函数scanf(“%d%d%d“, /输出函数 ,初识函数2,为什么要用函数,问题: 大规模的程序 实际应用程序中需要多次实现某一功能,用循环实现?,所有代码全写在main()中?,什么是函数,函数是一段完成特定功能的程序 换句话说,函数就是能够完成一定功能的语句的集合,是程序编译运行的基本单位。 前面一直在用各种各样的函数,如printf()、scanf() 等等。,将程序中反复使用的程序定义为函数的形式,函数的分类 从用户角度 标准函数(库函数):由系统提供 用户自定义函数 从函数形式 无参函

3、数 有参函数,无参无返回值 无参有返回值,有参无返回值 有参有返回值,为什么要定义函数,C语言要求,在程序中用到的所有函数,必须“先定义,后使用” 指定函数名字、函数返回值类型、函数参数的名字与类型、函数实现的功能,将这些信息通知编译系统。,为什么要定义函数,对于库函数,程序设计者只需用#include指令把有关的头文件包含到本文件模块中即可 程序设计者需要在程序中自己定义想用的而库函数并没有提供的函数,函数的定义,函数定义的通用形式为:返回值类型 函数名 (参数数据类型 参数1 , 参数数据类型 参数2, ),函数首部,函数定义示例(1),一、无参数无返回值的函数 如:定义printStar

4、函数,用以在屏幕上输出5个*符号。 void printStar( ) int star;for(star=1; star=5; star+)printf(“*“);printf(“n“) ; ,函数无返回值时使用的数据类型,函数的调用(有参函数),无参无返回值函数的调用形式: 函数名( );,无参数无返回值的函数的调用,#include void printStar( ); void main( ) printStar( ); /函数调用 void printStar( ) /函数定义 int star;for(star=1; star=5; star+)printf(“*“);printf

5、(“n“) ; ,自定义函数的声明,在程序的开头加上对应函数的声明 函数声明的形式:返回值类型 函数名称(参数类型 参数1, ) ;其中前面的与函数定义时的首部完全一样,但末尾必须加“;”。 如对printStar函数的声明为:void printStar( );,无参数无返回值的函数的示例,#include void printStar( ); /函数声明 void main( ) printStar( ); /函数调用 void printStar( ) /函数定义 int star;for(star=1; star=5; star+)printf(“*“);printf(“n“) ; ,

6、授课要点,函数的定义、声明、调用 无参无返回值的函数 无参有返回值的函数 有参无返回值的函数 有参有返回值的函数,问题:,过年回家,车票难买,到处托人。假如你先把车票钱给帮你买车票的朋友, 那么返回给你的应该是一张车票(当然是顺利的情况)。 同理,在C语言中,函数的调用有时候也是有返回值的,那么如何理解?,分析,对应到函数上,你的朋友就是函数,车票就是函数的返回值,而你就是调用函数的主程序。,函数的返回值,函数的返回值 返回语句 形式: return(表达式);或 return 表达式;或 return; 功能:使程序控制从被调用函数返回到调用函数中,同时把返回值带给调用函数,函数定义示例(2

7、),二、无参数有返回值的函数如定义函数sum_100,用以求1+2+3+100的和,并将结果返回给调用它的函数。int sum_100( ) int s=0, i;for(i=1; i=100; i+)s=s+i;return s ; /用return返回一个值给主调函数,( ),无参数有返回值的函数示例,#include int sum_100( ); /函数声明void main( ) int s1;s1 = sum_100( ); /函数调用printf(“和值为:%dn“, s1); int sum_100( ) /函数定义(首部) int s=0, i;for(i=1; i=100;

8、 i+)s=s+i;return s; /返回值给主调函数,模仿练习,无参无返回值函数编写: 1、自定义函数myPrint1( ),在屏幕上输出如下图形(每行10个$符号),并在主函数中调用myPrint1()函数。$,模仿练习,无参无返回值函数编写: 2、自定义函数myPrint2( ),在屏幕上输出如下图形,并在主函数中调用myPrint2( )函数。,模仿练习,无参有返回值函数编写: 3、自定义函数myFac(),计算10!,将计算结果返回给调用者。然后在主函数中调用myFac()函数,输出该结果。 4、自定义函数myMax(),实现功能:从键盘输入3个数,求最大数并将最大数返回给调用者

9、。然后在主函数中调用myMax()函数,输出该结果。,讨论并总结,1、为什么使用函数? 2、如何理解函数调用与函数定义的不同? 3、空函数在程序结构设计中有什么作用?(P174),授课要点,函数的定义、声明、调用 无参无返回值的函数 无参有返回值的函数 有参无返回值的函数 有参有返回值的函数,问题:,试编程实现计算并输出 3!、4!、5!。,问题解决函数定义示例(3),三、有参数无返回值的函数 如定义fanc_n()函数,用以计算n!。其中n的值是由调用该函数的函数传递过来的。void fanc_n( int n) int i,s=1;for(i=1; i=n; i+)s*=i;printf(

10、“%dn“,s);,函数参数(称为形参),函数调用,有参无返回值函数的调用形式:函数名(实参); 实参与形参: 个数相等 类型一致 按顺序一一对应,有参数无返回值的函数调用,#include void fanc_n(int n); /函数声明void main( ) int num;scanf(“%d“, ,函数参数(称为形参),授课要点,函数的定义、声明、调用 无参无返回值的函数 无参有返回值的函数 有参无返回值的函数 有参有返回值的函数,问题:,在主函数中输入n,自定义函数,计算1+2+3+4+n-1+n,将结果在主函数中输出。,问题解决函数定义示例(4),四、有参数有返回值的函数 如定义

11、函数sum_n(),用以求1+2+3+n的和,并将结果返回给调用它的函数。int sum_n( int m ) int s=0, i;for(i=1; i=m; i+)s=s+i;return s; /通过return返回一个值,#include int sum_n( int m ); /函数声明void main( ) int s1, n;scanf(“%d“, /返回一个值给主调函数,有参数有返回值的函数调用,函数的调用,1、语句调用方式 2、函数表达式 3、函数参数,函数的调用,调用方式 语句调用:例 printmsg();printf(“打印成功!n“); 函数表达式调用:例 resu

12、lt=aver(totalscore, stuno); 函数参数调用:例 printf(“%f“,aver(totalscore, stuno);,问题:,用户输入两个整数a、b,通过下面的例子中传递方式能否实现a、b值的交换?,函数的值传递方式,#include void swap(int a,int b); /swap函数的声明 void main() int x=7,y=11;printf(“x=%d,ty=%dn“,x,y);printf(“swapped:n“);swap(x,y); /调用swap函数printf(“x=%d,ty=%dn“,x,y); void swap(int

13、a,int b) /定义swap函数 int temp;temp=a; a=b; b=temp; ,输出结果:x=7, y=11 swapped: x=7, y=11,结论值传递方式,值传递方式 方式:函数调用时,为形参分配单元,并将实参的值复制到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值 特点: 形参与实参占用不同的内存单元 单向传递,从实参到形参,随堂实践,有参无返回值函数编写: 1、自定义函数myprint_n(),在屏幕的一行上输出n个$符号。在主函数中调用myprint_n()函数,输出如下图形(每行上的符号个数由调用它的函数传递过来) 。 函数首部为:void my

14、print_n( int n)$(5个$)$(10个)$(15个)$(20个) 2、修改以上程序,实现以下功能:打印个数由用户输入决定,支持用户循环输入,当用户输入0时结束程序。,有参有返回值函数编写: 3、自定义函数myfac_n(),求n!,并在主函数中调用myfac_n()函数,输出结果。函数首部为: int myfac_n( int n) 4、自定义函数mypower(),求x的y次方,并在主函数中调用mypower()函数,输出结果。 函数首部为:double mypower( double x, int y) 5、自定义函数circleArea(),用于计算圆的面积,其中半径作为参

15、数传入。然后在主函数中调用它,并输出结果。 函数首部为: double circleArea(double radius),随堂实践,讨论并总结,1、函数的功能应该尽量保持相对独立还是依赖函数外的数据为好 ? 2、怎样使一个函数具有更大的通用性? 3、函数参数的值传递有哪些特点?,学以致用,寻找你身边的一个实际问题,编写解决问题的程序,用到函数定义和调用。 例、电视是我们日常生活中所熟悉的,我们通过遥控器选择不同的频道,就可以播放相应的频道。请定义一个函数tvPlay( int channel) ,模拟根据遥控器的输入的频道号码,播放相应的频道。然后给出调用的例子,比如,遥控器上选择 5, 则

16、播放CCTV-5体育频道。,练习每人必做,将“控制流程”阶段完成的“小型计算器”功能改写为函数,并在主函数中调用,注意参数的类型定义及传参过程。,练习选做,学以致用:寻找你身边的一个实际问题,编写解决问题的程序,要求用到函数调用、参数传递。,作业每人必做,1 、编写一个函数sum(n),计算1+2+n 之和,根据n值的不同,得到不同的值。要求分别计算n50,n80,n100的情况。 2、 将自己的“学生成绩管理系统”(循环菜单)以模块化的形式进行处理,具体实施方案:主菜单的显示和选择部分可定义函数menu_select()来调用,“编辑子菜单”可定义editmenu()来调用,“查找”可定义serachmenu()来调用。,作业选做,寻找你身边的一个实际问题,构造出解决问题的表达式,描述解决问题的算法,以及编写解决问题的程序。例如,MP3可以播放不同的歌曲,请编写一个MP3模拟函数,根据输入不同的歌曲代号,可以显示相应的歌曲名。然后,调用该函数。,

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报