如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第5章模块化编程C程序结构函数分类从用户角度标准函数(库函数):由系统提供用户自定义函数从函数形式无参函数有参函数5.1.1函数的定义多函数程序函数类型函数名(形参表)形参类型说明{说明部分语句部分}函数类型返回语句形式:return(表达式);或return表达式;或return;功能:使程序控制从被调用函数返回到调用函数中,同时把返值带给调用函数5.1.2函数的调用调用形式函数名(实参表);例比较两个数并输出大者5.1.3函数参数及其传递方式实际参数:调用函数时函数名后面括号中的表达式形式参数:定义函数时函数名后面括号中的变量名实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换——函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放,实参单元仍保留并维持原值。也就是说,形参与实参占用不同的内存单元——单向传递/值传递例计算x的立方printstar(){printf("**********");}main(){inta;a=printstar();printf("%d\n",a);}#include"stdio.h"intf(inta,intb){intc;if(a>b)c=1;elseif(a==b)c=0;elsec=-1;return(c);}main(){inti=2,p;p=f(i,++i);printf("%d\n",p);}对被调用函数要求:必须是已存在的函数库函数:#include<*.h>用户自定义函数:函数类型说明要求使用函数之前做函数说明一般形式:函数类型函数名(形参类型[形参名],…..);作用:告诉编译系统函数类型、参数个数及类型,以便检验函数说明位置:程序的数据说明部分(函数内或外)下列情况下,可不作函数说明若函数返值是char或int型,系统自动按int型处理被调用函数定义出现在主调函数之前例函数说明举例75.1.4函数的嵌套与递归调用嵌套调用p102C规定:函数定义不可嵌套,但可以嵌套调用函数例求三个数中最大数和最小数的差值5.1.5递归调用定义:函数直接或间接的调用自身叫函数的递归调用例求n的阶乘5.3变量的存储属性p111概述变量是对程序中数据的存储空间的抽象变量的属性数据类型:变量所持有的数据的性质(操作属性)存储属性存储器类型:寄存器、静态存储区、动态存储区生存期:变量在某一时刻存在-------静态变量与动态变量作用域:变量在某区域内有效-------局部变量与全局变量变量的存储类型auto-----自动型register-----寄存器型static------静态型extern-----外部型变量定义格式:[存储类型]数据类型变量表;局部变量与全局变量局部变量---内部变量规则:在函数内定义,只在本函数内有效(main中定义的变量也只在main中有效)全局变量---外部变量规则:在函数外定义,可为本文件所有函数共用有效范围:从定义变量的位置开始到本源文件结束,及有extern说明的其它源文件#include"stdio.h"floatmax,min;floataverage(floatarray[],intn){inti;floatsum=array[0];max=min=array[0];for(i=1;i<n;i++){if(array[i]>max)max=array[i];elseif(array[i]<min)min=array[i];sum+=array[i];}return(sum/n);}main(){inti;floatave,score[10];/*Input*/ave=average(score,10);printf("max=%6.2f\nmin=%6.2f\naverage=%6.2f\n",max,min,ave);}intp=1,q=5;floatf1(inta){intb,c;…….}intf3(){…..}charc1,c2;charf2(intx,inty){inti,j;……}main(){intm,n;…….}例外部变量定义与说明#include"stdio.h"inta=3,b=5;max(inta,intb){intc;c=a>b?a:b;return(c);}main(){inta=8;printf("max=%d\n",max(a,b));}#include"stdio.h"inti;main(){v