免费预览已结束,剩余52页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章函数,基本知识讲解,4.1概述4.2带自定义函数的程序设计4.3变量的作用域和存储类别4.4典型例题,返回,4.1概述,C语言源程序可由一个主函数和若个辅助函数组成。由主函数调用其他函数。其他函数也可互相调用。,4.1概述,main()printstar();print_message();printstar();printstar()printf(“*n”);print_message()printf(“Howdoyoudo!n”);,4.1概述,说明:1.一个源程序文件由一个或多个函数组成。一个源程序文件是一个编译单位。2.C程序的执行从main函数开始,在main函数中结束。3.所有函数都是平行的,即函数不能嵌套定义,函数可以互相调用,但不能调用main函数。4.从用户使用的角度看,函数有两种:标准函数(库函数)和自定义函数5.从函数的形式看,函数分为两类:无参函数和有参函数#,返回,4.1.1函数的定义,一、无参函数的定义形式类型标识符函数名()函数体,例:printstar()printf(“*n”);,4.1.1函数的定义,二、有参函数定义的一般形式类型标识符函数名(形式参数表)函数体,4.1.1函数的定义,例如:intmax(intx,inty)intz;z=xy?x:y;return(z);,4.1.1函数的定义,三、一个函数可以是空函数。如:dummy(),返回,#,一、函数的返回1.被调用函数执行到最后的“”时,自动返回2.被调用函数执行到return语句时返回,4.1.2函数的返回和返回值,二、函数的返回值1.return语句return(表达式);或:return表达式;或:return;return语句的用途有二:(1)用于结束函数的执行并返回到调用者;(2)用来向调用者传递一个返回值。注意:该语句对非void函数适用。,4.1.2函数的返回和返回值,4.1.3函数的声明和调用,要正确实现函数间的调用需满足下列条件:必须给出满足函数运行时要求的参数;被调用函数必须存在;被调用函数必须允许调用。,例:c=max(a,b);intmax(intx,inty),一、函数调用形式,函数名(实参表列);,4.1.3函数的声明和调用,1函数语句如:printf(“Oneworle”);2函数表达式如:c=max(a,b);3函数参数如:m=max(a,max(b,c);printf(“%d”,max(a,b);,4.1.3函数的声明和调用,二、函数调用的方式,main()floata,b,c;scanf(“%f,%f”,4.1.3函数的声明和调用,三、函数声明的一般形式函数类型函数名(类型1,类型2,类型n);或:函数类型函数名(类型1名1,类型2名2);,例如:floatadd(floata,floatb);或:floatadd(float,float);,再如:charfun2(inti,charp1);,4.1.3函数的声明和调用,注意:函数声明与函数定义不同!,main()inta,b,c;voidprint();scanf(“%d,%d”,intmax(intx,inty)intz;z=xy?x:y;return(z);voidprint()inti;for(i=0;i0;x-)y=y*x;return(y);,4.1.4形式参数和实在参数,一、形式参数和实际参数形式参数:定义函数时函数名后括号中的变量名,简称形参;实际参数:调用函数时函数名后括号中的表达式,简称实参。,4.1.4形式参数和实在参数,二、参数值的传递实参传值给形参,main()inta,b,c;scanf(“%d,%d”,intmax(intx,inty)intz;z=xy?x:y;return(z);,4.1.4形式参数和实在参数,关于形参和实参的说明:1.实参可以是常量、变量或表达式,如:c=max(3,a+b);2.定义函数时,必须指定形参的类型;3.实参与形参的类型应一致或兼容。4.C语言规定,实参对形参的数据传递是“值传递”。5.函数未调用时,形参并不占内存中的存储单元。在函数调用时,形参才被分配内存单元。调用结束后,形参所占的内存单元被释放。,4.1.4形式参数和实在参数,main()inta,b,c;scanf(“%d,%d”,intmax(intx,inty)intz;z=xy?x:y;return(z);,5,8,8,4.1.4形式参数和实在参数,return,2.函数值的类型如:intmax(intx,inty)charletter(charc1,charc2)doublemin(intx,doubley)C语言默认函数返回值为int型。3.如果函数值的类型和return语句中表达式的值不一致,则以函数类型为准。如:,4.1.4形式参数和实在参数,main()floata,b;intc;scanf(“%f,%f”,若输入的数据流如下:1.5,2.5则输出的结果为:Maxis2,4.1.4形式参数和实在参数,4.可用“void”定义“无类型”函数。如:,voidprintstar()printf(“*n”);voidp_message()printf(“Howdoyoudo!n”);,4.1.4形式参数和实在参数,返回,例1:写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。分析:编写函数prime(intn),其功能是判断n是否是素数,如是则返回1,否则返回0;编写main(),输入一个整数,调用prime函数,输出是否是素数的信息。程序清单:,4.2带自定义函数的程序设计,返回,判断素数,main()intm;scanf(“%d”,prime(intn)inti,flag=1;for(i=2;ib?a:b;return(c);main()inta=8;/*a局部变量*/printf(“%d”,max(a,b);,printf(“%d,%d”,a,b);,返回,4.3.2变量的生存期,一、动态存储方式与静态存储方式静态存储方式:指在程序运行期间分配固定的存储空间的方式。动态存储方式:在程序运行期间根据需要进行动态的分配存储空间的方式。,4.3.2变量的生存期,静态存储区:存储空间的分配在编译阶段进行,且存于其中的数据对象相对于程序的执行是永久的。动态存储区:存储空间的分配是在程序的运行过程中进行的。,二、auto变量调用函数时系统自动分配存储空间,在函数调用结束时自动释放这些存储空间,称这类局部变量为自动变量。自动变量用关键字auto作存储类别的声明。它也可省。三、用static声明局部变量静态的局部的,4.3.2变量的生存期,f(inta)autointb=0;staticintc=3;b=b+1;c=c+1;return(a+b+c);main()inta=2,i;for(i=0;i=1e-5);returnx;,定义root函数,求近似根,main()floatx1,x2,f1,f2,x;doprintf(“inputx1,x2:n”);scanf(“%f,%f”,main函数root函数xpoint函数f函数,调用root函数调用xpoint函数调用f函数,结束,用牛顿迭代法求根。方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。牛顿迭代法先给定方程f(x)=0一个较好的近似根x,迭代公式:xn+1=xn-f(xn)/f(xn),#include“math.h”floatsolut(floata,floatb,floatc,floatd)floatx=1,x0,f,f1;dox0=x;f=(a*x0+b)*x0+c)*x0+d;f1=(3*a*x0+2*b)*x0+c;x=x0-f/f1;while(fabs(x-x0)=1e-5);return(x);,main()floata,b,c,d;printf(“ninputa,b,c,dn”);scanf(“%f,%f,%f,%f”,用二分法求解方程2x34x2+3x-6=0的根,要求绝对值误差不超过0.001,m,n,r,f(r),f(n),f(m),fl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广西制造工程职业技术学院单招综合素质考试题库含答案详解ab卷
- 2026年广东省肇庆市单招职业适应性测试题库附参考答案详解ab卷
- 2026年巴中职业技术学院单招综合素质考试题库带答案详解(培优a卷)
- 2026年岳阳现代服务职业学院单招职业倾向性测试题库完整答案详解
- 2026年平顶山工业职业技术学院单招职业适应性测试题库附参考答案详解ab卷
- 须部假性毛囊炎的护理
- 2026年广东省汕尾市单招职业适应性测试题库附参考答案详解(能力提升)
- 2026年广东省深圳市单招职业倾向性测试题库带答案详解(考试直接用)
- 2026年广东金融学院单招综合素质考试题库附参考答案详解(达标题)
- 2026年山西警官职业学院单招职业倾向性测试题库附答案详解(培优a卷)
- DB22T 2578-2016 易燃易爆场所防雷防静电装置检测技术规范
- 浙江省金华市金东区2023-2024学年八年级上学期期末语文试题及答案
- YC-T 591-2021 烟草行业实验室安全管理要求
- 2023年冬、雨季施工监理细则
- 风险和机遇识别、评价及控制措施表
- 部队珍爱生命教育课件
- 城市燃气工程系统的规划的资料课件
- 漆安慎力学第二版课后习题解答及漆安慎-力学答案
- PCI围术期强化他汀治疗的获益和机制课件
- 沥青搅拌站安全生产风险分级管控体系方案资料(2022-2023版)
- WTO海关估价协议中文版
评论
0/150
提交评论