预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共66页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第六章函数6.1问题的提出与程序示例解决方法: 6.2函数基础二、C函数与C程序结构从用户使用的角度看,函数有两种:1.库函数的定义放在头部文件中 2.用户自定义函数。 格式:[函数返回值的类型说明]函数名([形参定义表]) { 说明部分 语句 }一、无参函数的定义形式例如: intmax(intx,inty)/*求x和y二者中大者,x,y为形参*/ {intz;/*函数体中变量的说明*/ z=x>y?x:y; return(z);/*将z的值作为函数返回值*/ }四、对形参说明的传统方式例:编写一个函数实现求xn 注意: 函数定义中的函数体是用花括号括起来的语句,在函数体中,数据说明要放在执行语句的前面。 函数定义中不能包含另一个函数的定义,即函数定义不能嵌套。 6.4函数的调用三、函数调用的方式四函数参数和函数的值上例中形参与实参、函数名与返回值之间的关系:调用函数的一般执行过程abc() { }⑷实参可以是常量、变量或表达式,并且必须 有确定的值;例:函数间的参数传递六函数的嵌套调用函数不能嵌套定义,但可嵌套调用编写程序:不断的从键盘上输入一组数据,计算并输出它们的最大公约数6.5函数的返回值说明:三、函数值的类型6.6对被调用函数的说明(函数声明)一般形式:3.被调用函数是库函数的函数说明4.函数说明和函数定义的区别5.可省略被调用函数说明的三种情况⑵被调用函数定义在主调函数之前,可以不进行 类型说明。⑶如果已在所有函数定义之前,在文件的开头, 在函数的外部已说明了函数类型,则在各个主 调函数中不必对所调用的函数再做说明。6.8数组作为函数的参数二、数组名可以做函数的参数⑴在主调函数和被调函数中分别定义数组;例7.14:用选择法对数组中10个整数按由小到大排序.main() {inta[10],i; printf(“enterarray:\n”); for(i=0;i<10;i++) scanf(“%d”,&a[i]); sort(a,10); printf(“thesortedarray:\n”); for(i=0;i<10;i++) printf(“%d”,a[i]); printf(“\n”); }三、多维数组可以做函数的参数6.9局部变量和全局变量例1:f1(inta) {intb,c; …在本函数中a、b、c有效 } f2(inta,intb) {intc,d;在本函数中a、b、c、d有效 …但与f1函数中的a、b、c不同 } main() {intm,n;在本函数中m、n有效 … }例2: main() {inta,b; …. {intc c=a+b;a、b在此 …c在此范围范围内有效 内有效 } …. }二、全局变量从程序设计的观点看使用全局变量:7.10变量的存储类别二、静态存储变量和动态存储变量C语言变量的属性:1.auto(自动的)说明:局部静态变量外部静态变量⑵寄存器变量属于动态存储变量,但并不放在动态 存储区中,它放在寄存器中。4.extern(外部的)⑷在同一个源文件中,全局变量的作用域之外的函 数中使用该全局变量时,也需用extern对其说明。内部函数和外部函数二、外部函数7-12预处理命令一、不带参数的宏定义及宏替换引例:⑵宏名用做代替一个字符串,不作语法检查;说明:二、带参数的宏定义及宏替换注意:三、带参数的宏替换与函数的主要区别#defineMAX(x,y)x>y?x:y main() { intn1=3,n2=6; floatf1=67.9,f2=9.8; printf("maxi=%dmaxf=%f",MAX(n1,n2),MAX(f1,f2)); }