资源描述:
《C语言程序设计应用教程 教学课件 作者 许勇第5章 函数 .ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5章函数5.1函数概念引入5.2库函数5.3函数定义5.4函数间的参数传递5.5函数调用5.6数组与函数5.7变量的作用域5.8变量的存储类型5.9函数的存储分类我们先看一个C程序:intmul(intx,inty){intresult;result=x*y;returnresult;}main(){inta,b,c,d,e;printf(“inputa,b,c:”);scanf(“%d%d%d”,&a,&b,&c);d=mul(a,b);/*计算ab的积*/e=mul(b,c);/*计算bc的
2、积*/printf(“”);printf(“a*b=%d”,d);printf(“b*c=%d”,e);}说明:⑴程序由2个函数模块构成,它们是mul函数和main主函数。由此可见一个C程序可以由一个main函数组成,也可以由一个main函数和多个其他函数组成。⑵main函数调用了mul()函数。由此可见,在C程序中,main函数能调用其他一切函数,反之不行。(3)函数有两类:①标准函数,即库函数。这是由系统提供的,如printf()和scanf()函数,可以直接使用它们。②用户自己定
3、义的函数。用以解决用户的专门需要⑷从函数的形式看,参数分两类:①形式参数,mul函数所带的参数x,y称为形式参数。②实在参数,main函数的调用语句中出现的a,b等都叫实在参数。5.1函数概念引入一、C函数的概念将一个C程序分为若干模块,每个模块实现一个特定的功能,在C语言中用函数来实现模块的功能。函数:具有某种功能的独立程序段。⑴从程序设计方法看C函数:它是实现模块化程序设计的语法元素。⑵从C语言中程序的组成方式看C函数:它是程序的基本组成单位。二、C函数与C程序结构⑴C程序由主函数(main函
4、数)和若干个子函数构成;⑵主函数调用子函数;⑶子函数在定义时是并列的;⑷子函数可相互调用,也可被多次调用。mainabcdefghhiegmain()/*主函数*/{print_star();/*调用print_star函数画****/print_message();/*调用print_message函数写字*/print_star();/*调用print_star函数画****/}print_star()/*定义print_star函数*/{prinf(“**********”);}prin
5、t_message()/*定义print_message函数*/{prinf(“Hello!”);}函数调用例:运行结果:**********Hello!**********三、C函数的特点⑴一个源文件由一个或多个函数组成,它是一个独立编译单元。⑵一个C程序由一个或多个源文件组成;⑶C程序执行总是从main函数开始,调用其他函数后流程回到main函数,在main函数中结束整个程序的运行。⑷函数不能嵌套定义,但可以互相调用。注意不能调用main函数。四、函数的分类1.从函数的参数形式看,函数可分
6、为两类:①无参函数;②有参函数有参函数例:(输出两数中大者)#includeintmax(intx,inty);main(){intnum1,num2,a;scnaf("%d,%d",&num1,&num2);a=max(num1,num2);printf("max=%d",a);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;}2.从用户使用的角度看,函数有两种:①标准函数(库函数);②用户自己定义的函数库函数:是由编译系统提供的已设计好的
7、函数,用户只需调用而无需要去实现它。前几章用过的scanf,printf,getchar,putchar等都是库函数。用户自定义函数:由程序员自己定义和设计的函数。需要程序员自己来编写函数功能实现代码。5.2库函数调用库函数要用include命令,其后要包括头文件名,其一般形式:#include“文件名”例如:#include{intx=10;abs(x);}库函数调用的一般形式为;库函数名(参数表);函数名含义用法abs求整数的绝对值intabs(inti);cos求余弦函数do
8、ublecos(doublex);exp求指数函数doubleexp(doublex);labs取长整型绝对值longlasb(longn);log求对数函数longdouble(x)pow指数函数(x的y次方)doublepow(doublex,doubley);sin求正弦值doublesin(doublex);sqr计算平方根doublesqrt(doublex);tan求正切值doubletan(doublex);itoa把整型转换为字符型char*itoa(intvalu