资源预览内容
第1页 / 共96页
第2页 / 共96页
第3页 / 共96页
第4页 / 共96页
第5页 / 共96页
第6页 / 共96页
第7页 / 共96页
第8页 / 共96页
第9页 / 共96页
第10页 / 共96页
亲,该文档总共96页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第八章 函数内蒙古科技大学 工程训练中心*工程训练中心 徐国海学习内容引入现状我们的程序都是由一个main()主函数构成。存在 问题若是一个小程序的话,把几行命令全部放在main() 主函数中进行编写,还算清晰。但如果要编写一个较 大的程序,仍采用上述方法,全部在main()主函数 中从头到尾编写的话,就会给程序的修改和调试都带 来麻烦。问题 解决将一个较大的程序分为若干个子模块,每个模块实现 一个独立的功能。这样就结构清晰、功能分工明确了 。模块化程序设计思想在C语言中,模块是用函数来实现的。Date工程训练中心 徐国海n一个程序可以由一个主函数和若干个子函数构成。mainabdbcd函数概述(一)n由主函数调用其他函数,其他函数之间也可以互相调用。n同一个函数可以被一个或多个函数调用任意多次。nC程序的执行从main函数开始,调用其它函数后再返回到main函数,在 main函数结束整个程序的执行。main( ) a( );b( );c( );a( )d( );d( ) Date工程训练中心 徐国海函数概述(二)函数标准库函数用户自定义函数n 函数的使用包括三个方面:函数定义、函数说明和函数调用。n 函数分为标准库函数和用户自定义函数。1.由C系统提供的,无需用户自己定义。2.用#include将描述库函数的头文件包含进来 。 3.可以在任何程序中使用。1. 定义。 2. 说明。 3.调用。Date工程训练中心 徐国海例1#include void main() printf(“*n”); printf(“ Hello!n); printf(“*n”); 程序运行结果为:*Hello! *#include void pt_star( ) printf(“*n”); void pf_word( ) printf(“ Hello!n); void main() pt_star( ); /*调用pt_star 函数*/pf_word( ); /*调用pt_star 函数*/pt_star( ); /*调用pt_star 函数*/ Date工程训练中心 徐国海函数定义(一)n函数定义的一般形式如下:函数头函数体 void 函数名( ) 函数类型说明 函数名( 形式参数列表 ) 说明语句部分执行语句部分 函数名,是不可缺省的部分,用于标识该函数,同时它也代表了该 函数的入口地址。 函数类型说明,是用来规定函数返回值的类型,缺省时,默认为int 型。 用return语句返回确切的值 。空函数Date工程训练中心 徐国海函数定义(二)n无参函数的定义形式如下:函数类型说明 函数名( ) 说明语句部分执行语句部分 由于无参函数一般用来完成一个指定的功能,不需返回值,所 以通常将无参函数的类型定义为void,意指没有返回值。函数头函数体void 函数名( ) 说明语句部分执行语句部分Date工程训练中心 徐国海例1解析#include void pt_star( ) printf(“*n”); void pt_word( ) printf(“ Hello!n); void main() pt_star( ); /*调用pt_star 函数*/pt_word( ); /*调用pt_star 函数*/pt_star( ); /*调用pt_star 函数*/ 定义一个名字为pt_star的函数, 完成打印一串米星号的操作,没 有返回值。定义一个名字为pt_word的函数 ,完成打印输入字符的操作, 没有返回值。Date工程训练中心 徐国海函数定义(三)n有参函数的定义形式如下:函数头函数体 形式参数,简称为形参。要对形参进行类型说明,多个形参之间用“逗号”间隔。函数类型说明 函数名(形式参数列表) 说明语句部分执行语句部分 当函数被调用时,形参接收来自主调函数的数据,以确定各参数的值 。 主调函数中,用以给形参传递数据的参数称为实际参数,简称实参。 形参与实参应在数量上相同、类型上相同或赋值兼容。Date工程训练中心 徐国海例2求两个数中的最大数void main() int max(int x,int y); int a,b,c;scanf(“%d,%d”,c=max(a,b);printf(“max=%d”,c);int max(int x,int y) int ;xy?xy;return(); 定义了一个名字为max的函数,带有两 个整型的参数;功能是找出两个数中的最大数;返回最大数的值。调用max函数。Date工程训练中心 徐国海例2 解析void main() int max(int x,int y) ;int a,b,c;scanf(“%d,%d”,c=max(a,b);printf(“max=%d”,c);int max(int x,int y) int ;xy?xy;return();6a5b实参xy形参65zmax(a,b)Date工程训练中心 徐国海数据在函数间的传递如:void main() int a,b,c; scanf(“%d,%d”,c=max(a,b);printf(“max=%dn”,c);int max(int x,int y) int z,t=3; x=x+t; y=y-t;xy?xy;return (z); 结果为:max=_9_6a5b实参65xy形参x+t y-t92Date工程训练中心 徐国海数据传递实例交换两个变量的值#include void swap(int x,int y);void main( ) int a,b;a=5; b=10;printf(“before swap:a=%d,b=%dn”,a,b);swap(a,b);printf (“after swap:a=%d,b=%dn”,a,b);void swap(int x,int y) int temp;temp=x;x=y;y=temp;printf(“in swap: x=%d,y=%dn”,x,y); 5a10bxy510105运行结果:before swap:a=5,b=10 in swap:x=10,y=5 after swap:a=5,b=10Date工程训练中心 徐国海函数定义练习 求一个数的平方#include float sq(_) float c; c=x*x; return (_); void main( ) float a,b;scanf(“%f”,b=sq(a);printf(“ this is number : %fn”,b); A. x B. int x C. float x A. x B. cDate工程训练中心 徐国海数据在函数间的传递练习如:void main() int a,b; scanf(“%d,%d”,printf(“no1: %d,%dn”,a,b);md(a,b);printf(“no2: %d,%dn”,a,b);int md(int x,int y) int z=3; x=x+z; y=y-z;printf(“no3: %d,%dn”,x,y);输入6,5 结果为:no1: 6,5no3: 9,2no2: 6,5Date工程训练中心 徐国海例4 根据三边长求出三角形的面积#include #include float sabc(float a,float b,float c) float hl,s; hl=0.5*(a+b+c); s= sqrt(hl*(hl-a)*(hl-b)*(hl-c)return (s); void main( ) float x,y,z,area;scanf(“%f,%f,%f”,if (x+yz) else printf(不能构成三角形!n); Date工程训练中心 徐国海本小节总结n无参函数和有参函数的定义方法函数类型说明 函数名( 形式参数列表 ) 说明语句部分执行语句部分实参 形参n数据在函数间的传递n对函数的调用进行了简单说明值Date工程训练中心 徐国海函数定义练习2 求m!/n!的值#include long int jc(_) int i; long int t=1; for(i=1; i void main( ) long int sum(int n) ;int n; long int result;scanf(“%d”,result=sum(n);printf(“1+2!+3!+d! %ldn”,n,result); long int sum(int n) int i; long int s=0; long int jc(int n) ;for(i=1; i long int sum(int n) ; long int jc(int n) ; void main( ) int n; long int result;scanf(“%d”,result=sum(n);printf(“1+2!+3!+d! %ldn”,n,result); long int sum(int n) int i; long int s=0; for(i=1; iy)x; return();elsey; return();return ;(1) 函数的返回值是通过函数中的return语句获得的。如果要得到返 回值,被调函数中必须包括return语句。如果被调函数中有多个 return语句,则执行到哪个return语句,哪个return语句起作用。 return语句后面的括号也可以不要。Date工程训练中心 徐国海函数值的返回(二)(3) 如果被调函数中没有return语句或return后边没有具体的返回值 ,则带回一个不确定的值。为了明确表示“不带回值”,可以用 “void”定义“无类型”(也称空类型)。(2) return后边可以是任何表达式,如果函数值的类型和return语句 中表达式的值不一致,则以函数类型为准。int max(int x,int
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号