《C语言程序设计教程》课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《C语言程序设计教程》课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计教程 语言程序设计 教程 课件
- 资源描述:
-
1、C语言程序设计教程Huanghuai University Department of Computer Science主讲:傅主讲:傅 丰丰黄淮学院黄淮学院计算机计算机科学科学系系高等教育出版社谭浩强 张基温等编著第四章第四章 模块化程序设计模块化程序设计 1 函数 4.1.1 C程序结构 4.1.2 函数定义定义与函数声明声明 4.1.3 函数的(传值)调用调用 4.1.4 函数的嵌套嵌套调用 4.1.5 函数的递归递归调用 2 变量的存储属性 3 编译预处理2学时2学时本节本节2学时2学时1 函数(程序模块)函数(程序模块)一、一、C程序的结构程序的结构v 较大的程序一般分为若干个程序模
2、块较大的程序一般分为若干个程序模块。每个模块实现一个特定的功能。每个模块实现一个特定的功能。v常将一些常用的功能模块编写成函数,以被多个程序调用常将一些常用的功能模块编写成函数,以被多个程序调用。main()f1();f2();f1()f11();f2()f21();f22();f11()f21()f22()main()f1()f2()f11()f21()f22()P102例例1(略)(略)函数值类型函数值类型 函数名(类型函数名(类型 形参形参,)函数体函数体二、函数定义与函数声明二、函数定义与函数声明1、函数定义(自定义函数,即程序模块)、函数定义(自定义函数,即程序模块)1、函数值类型:
3、即函数体中、函数值类型:即函数体中return语句中表达式值的类型。无返回值时语句中表达式值的类型。无返回值时(无(无return语句),函数值类型为语句),函数值类型为void。默认为。默认为int型。型。2、形式参数:形参间用逗号分隔,无参时括号不能省。编译时不为、形式参数:形参间用逗号分隔,无参时括号不能省。编译时不为形参形参分配存储空间,调用时才临时为其分配存储空间,从调用函数的分配存储空间,调用时才临时为其分配存储空间,从调用函数的实参实参得得到值,称为到值,称为“虚实结合虚实结合”。调用结束时,形参所占空间被释放。调用结束时,形参所占空间被释放。3、函数体:由声明部分和语句部分组成
4、。函数体中定义的变量只在执行、函数体:由声明部分和语句部分组成。函数体中定义的变量只在执行该函数时才存在。声明部分和语句部分都省略时,为空函数:该函数时才存在。声明部分和语句部分都省略时,为空函数:void f()4、函数的返回:函数执行到最后一个操作或遇到、函数的返回:函数执行到最后一个操作或遇到return语句时,语句时,返回返回主主调函数,同时调函数,同时撤消撤消为函数体中为函数体中变量变量及及形参形参分配的存储空间。分配的存储空间。5、函数不能嵌套定义,一个函数不能定义在别的函数内部。、函数不能嵌套定义,一个函数不能定义在别的函数内部。说说明明声明部分声明部分语句部分语句部分retur
5、n(表达式表达式);所需的已知量所需的已知量P104例例2:找出函数定义部分:找出函数定义部分 main()double new_style(int a,double x);double new_style(int a,double x)/*函数体*/func1()func2()错错 P107:函数不能嵌套定义函数不能嵌套定义int jdz(int x)return(x=0?x:-x);P105例例3:编写求一个整数的绝对值的函数:编写求一个整数的绝对值的函数 main()int a,b;scanf(“%d”,&a);b=jdz(a);printf(“%dn”,b);函数定义函数定义 函数调用
6、函数调用 形参形参 实参实参 实参实参形参形参执行函数体执行函数体返回调用处返回调用处P106例例4:编写打印:编写打印n个空格的函数个空格的函数void spc(int n)int i;for(i=1;i=n;i+)printf(“”);main()int m;scanf(“%d”,&m);spc(m);函数定义函数定义 函数调用函数调用 形参形参 实参实参 实参实参形参形参执行函数体执行函数体返回调用处返回调用处P106例例5:编写求表达式值的函数:编写求表达式值的函数:y=float f(float x)if(x0)return(x*x+x+1);else return(x*x*x+x+
7、3);main()float x,y;scanf(“%f”,&x);y=f(x);printf(“%fn”,y);函数定义函数定义 函数调用函数调用 形参形参 实参实参 实参实参形参形参执行函数体执行函数体返回调用处返回调用处 x2-x+1 x10)return(2*n+3);else return();错错 P107例例6:例:函数定义:例:函数定义:double func(double a,int b,float c)/*函数体函数体*/函数声明应为:函数声明应为:double func(double a,int b,float c);或:或:double func(double x,in
8、t y,float z);1、可不写形参名:、可不写形参名:double func(double,int,float);2、不能只写形参名而不写类型:、不能只写形参名而不写类型:double func(x,y,z);3、只有函数返回值为、只有函数返回值为int或或char时,函数值类型才可以省略。时,函数值类型才可以省略。4、函数定义的声明中形参的次序与类型要一致。如:、函数定义的声明中形参的次序与类型要一致。如:double func(int y,float z,double x);错误错误5、当某函数要被多个函数调用时,可将函数的调用声明写在、当某函数要被多个函数调用时,可将函数的调用声明
9、写在所有函数前。如:所有函数前。如:2、函数声明:、函数声明:函数值类型函数值类型 函数名(类型函数名(类型 形参,形参,););对在本函数中要调用的函数所做的说明对在本函数中要调用的函数所做的说明 函数原型(函数函数原型(函数定义的第一行)定义的第一行)说说明明fun1()f(a,b);fun2()f(c,d);float f(float x,float y)main()float f(float x,float y);三、函数的三、函数的(传值传值)调用调用函数名(实参,实参,函数名(实参,实参,)无返回值:函数名无返回值:函数名(实参表实参表);有返回值:变量有返回值:变量=函数名函数名
10、(实参表实参表);P109例例7:main()int a=3,b=5;void swap(int x,int y);swap(a,b);printf(“a=%d,b=%dn”,a,b);void swap(int x,int y)int temp;temp=x,x=y,y=temp;printf(“x=%d,y=%dn”,x,y);函数调用函数调用 函数定义函数定义形参形参 实参实参 执行函数体执行函数体返回函数值返回函数值释放相应空间释放相应空间函数声明函数声明 实参实参形参形参实参实参 形参形参 35ab3 35xy533tempx=5,y=3a=3,b=5程序的运行:程序的运行:值传递值
11、传递P110例例8:实参与形参的个数类型要一致实参与形参的个数类型要一致main()float add();float x=1.5,y=-5.7;printf(“%f+%f=%fn”,x,y,add(x,y);float add(unsigned int a,unsigned int b)printf(“a=%u,b=%un”,a,b);return(a+b);函数调用函数调用 形参形参 实参实参 执行执行函数函数体体返回函数值返回函数值释放相应空间释放相应空间函数声明函数声明 实参实参形参形参实参实参 形参形参 1.5-5.7xyaba=0,b=01.500000+-5.700000=0.0
12、00000程序的运行:程序的运行:00函数定义函数定义P136习题习题9:写出程序的输出结果:写出程序的输出结果main()int i,j,x,y,n,g;i=2;j=3;g=x=5;y=9;n=7;fun(n,6);printf(“g=%d;i=%d;j=%d;n”,g,i,j);printf(“x=%d;y=%dn”,x,y);fun(n,6);fun(int i,int j)int x,y,g;g=8;x=7;y=2;printf(“g=%d;i=%d;j=%dn”,g,i,j);printf(“x=%d;y=%dn”,x,y);形参形参 实参实参 实参实参 7n6g=8;i=7;j=6
13、;x=7;y=2g=5;i=2;j=3;x=5;y=9g=8;i=7;j=6;x=7;y=2程序的运行:程序的运行:ijgxy23559形参形参 ij76gxy872形参形参 ij76gxy872main()u=f1(i,t);函数不能嵌套定义,但可以嵌套调用函数不能嵌套定义,但可以嵌套调用四、函数的嵌套调用四、函数的嵌套调用 c=f2(b-1,b+1);return(x);main函数函数f1函数函数f2函数函数课堂练习课堂练习main()int x,n,s;s=power(x,n);P136习题习题1:指出程序中的错误:指出程序中的错误power(y)int i,p=1;for(i=1;i
14、=n;+i)p=p*y;power函数的调用未声明。函数的调用未声明。实参实参x、n未赋值。未赋值。实参实参x、n与形参与形参y个数不符。个数不符。整个程序无输出。整个程序无输出。未说明形参未说明形参y的类型。的类型。变量变量n未定义,应将之作为未定义,应将之作为形参定义。形参定义。通过主函数对通过主函数对power函数的函数的调用可以看出该函数有返回值,调用可以看出该函数有返回值,因此因此power函数定义中应有函数定义中应有return(p);语句,且在第一行语句,且在第一行应说明函数值的类型。应说明函数值的类型。最后的最后的;号多余。号多余。求求ynmain()int n;char ch
展开阅读全文