《18-函数的定义声明调用》由会员分享,可在线阅读,更多相关《18-函数的定义声明调用(48页珍藏版)》请在金锄头文库上搜索。
1、Date: *临沂大学汽车学院:韩晓翠第7章 用函数实现模块 化程序设计Date: *授课要点 函数的定义、声明、调用 无参无返回值的函数 无参有返回值的函数 有参无返回值的函数 有参有返回值的函数Date: *#include #include void main() /主函数 int iNo,b; printf(“input a number:n“); /输出函数 scanf(“%d“, /输入函数 b=sqrt(iNo); /求平方根函数 printf(“%d“,b); /输出函数 初识函数1Date: */*从键盘输入3个数,求和并输出。*/ #include int myAdd(in
2、t x,int y,int z) int s; s=x+y+z; return s; void main() /主函数 int iNo1,iNo2,iNo3,sum; printf(“input 3 numbers:n“);/输出函数 scanf(“%d%d%d“, /输入函数 sum=myAdd(iNo1,iNo2,iNo3); /用户自定义函数 printf(“sum=%d“,sum); /输出函数 初识函数2Date: *为什么要用函数为什么要用函数 问题: 大规模的程序 实际应用程序中需要多次实现某一功 能 用循环实现?所有代码全写在main()中?Date: *什么是函数u函数是一段
3、完成特定功能的程序 换句话说,函数就是能够完成一定 功能的语句的集合,是程序编译运行 的基本单位。 前面一直在用各种各样的函数,如 printf()、scanf() 等等。u将程序中反复使用的程序定义为函数 的形式Date: *函数的分类从用户角度标准函数(库函数):由系 统提供用户自定义函数从函数形式无参函数有参函数无参无返回值 无参有返回值 有参无返回值 有参有返回值Date: *为什么要定义函数为什么要定义函数 C语言要求,在程序中用到的所有函 数,必须“先定义,后使用” 指定函数名字、函数返回值类型、 函数参数的名字与类型、函数实现 的功能,将这些信息通知编译系统 。Date: *为什
4、么要定义函数为什么要定义函数对于库函数,程序设计者只需用 #include指令把有关的头文件包 含到本文件模块中即可 程序设计者需要在程序中自己定义 想用的而库函数并没有提供的函数Date: * u函数的定义函数定义的通用形式为:返回值类型 函数名 (参数数据类型 参数1 , 参数数据类型 参数2, )函数首部函数体Date: *函数定义示例(1)一、无参数无返回值的函数 如:定义printStar函数,用以在屏幕上输出5个*符号 。 void printStar( ) int star;for(star=1; star void printStar( ); void main( ) prin
5、tStar( ); /函数调用 void printStar( ) /函数定义 int star;for(star=1; star void printStar( ); /函数声明void main( ) printStar( ); /函数调用 void printStar( ) /函数定义 int star;for(star=1; starint sum_100( ); /函数声明void main( ) int s1;s1 = sum_100( ); /函数调用printf(“和值为:%dn“, s1); int sum_100( ) /函数定义(首部) int s=0, i;for(i=
6、1; ivoid fanc_n(int n); /函数声明void main( ) int num;scanf(“%d“, fanc_n(num); /函数调用void fanc_n( int n) /函数定义(首部) int i,s=1;for(i=1; iint sum_n( int m ); /函数声明void main( ) int s1, n;scanf(“%d“, s1 = sum_n( n ); /函数调用printf(“和值为:%dn“, s1);int sum_n( int m ) /函数定义 (首部) int s=0, i;for(i=1; i void swap(int
7、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 a,int b) /定义swap函数 int temp;temp=a; a=b; b=temp; 输出结果:x=7, y=11 swapped: x=7, y=11Date: *结论值传递方式值传递方式 方式:函数调用时,为形参分配 单元,并将实参的值复制到形参中;调用 结束,形参单元被释放,
8、实参单元仍保 留并维持原值 特点: 形参与实参占用不同的内 存单元 单向传递,从实参到形参Date: * 随堂实践有参无返回值函数编写: 1、自定义函数myprint_n(),在屏幕的一行上输出n个$符 号。在主函数中调用myprint_n()函数,输出如下图形( 每行上的符号个数由调用它的函数传递过来) 。 函数首部为:void myprint_n( int n)$(5个$)$(10个)$(15个)$(20个) 2、修改以上程序,实现以下功能:打印个数由用户输入 决定,支持用户循环输入,当用户输入0时结束程序。Date: *有参有返回值函数编写: 3、自定义函数myfac_n(),求n!,并
9、在主函数中调用 myfac_n()函数,输出结果。函数首部为: int myfac_n( int n) 4、自定义函数mypower(),求x的y次方,并在主函数中 调用mypower()函数,输出结果。 函数首部为:double mypower( double x, int y) 5、自定义函数circleArea(),用于计算圆的面积,其中 半径作为参数传入。然后在主函数中调用它,并输出 结果。 函数首部为: double circleArea(double radius)随堂实践Date: *讨论并总结 1、函数的功能应该尽量保持相对独立还是 依赖函数外的数据为好 ? 2、怎样使一个函数具有更大的通用性? 3、函数参数的值传递有哪些特点?Date: *学以致用 寻找你身边的一个实际问题,编写解决问题的 程序,要求用到函数调用、参数传递。 例如:踢足球的时候,裁判要求换人,比如要 用8号换下18号,请用函数模拟换人,并在主函 数中调用。 Date: *练习每人必做将“控制流程”阶段完成的“小型计算器” 功能改写为函数,并在主函数中调用, 注意参数的类型定义及传参过程。Date: *练习选做 学以致用:寻找你身边的一个实际问题 ,编写解决问题的程序,要求用到函数 调用、参数传递。