版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、y?x:y;n return (z);nC语言程序设计4.1.1 函数的定义三、一个函数可以是空函数。 如: dummy( ) 前往前往#C语言程序设计一、函数的返回1. 被调用函数执行到最后的“”时,自动返回2. 被调用函数执行到return语句时返回4.1.2 函数的返回和返回值C语言程序设计二、函数的返回值1. return语句 return表达式); 或:return 表达式; 或:return; return语句的用途有二:(1用于结束函数的执行并返回到调用者;(2用来向调用者传递一个返回值。 留意:该语句对非void函数适用。4.1.2 函数的返回和返回值C语言程序设计4.1.3
2、函数的声明和调用要正确实现函数间的调用需满足下列条件:必须给出满足函数运行时要求的参数;被调用函数必须存在;被调用函数必须允许调用。C语言程序设计例: c = max(a ,b); int max(int x, int y)一、函数调用形式函数名函数名(实参表列实参表列);4.1.3 函数的声明和调用C语言程序设计1函数语句 如:printf(“One worle”);2函数表达式 如:c=max(a,b);3函数参数 如:m=max(a, max(b,c); printf(“%d”, max(a,b);4.1.3 函数的声明和调用二、函数调用的方式C语言程序设计main( ) float a
3、,b,c; scanf(“%f,%f”,&a,&b); c=add(a,b); printf(“sum is %f”,c);float add(float x, float y) float z; z=x+y; return z;4.1.3 函数的声明和调用float add(float x,float y);C语言程序设计三、函数声明的一般形式 函数类型 函数名(类型1, 类型2, , 类型n);或: 函数类型 函数名(类型1 名1, 类型2 名2);例如:float add(float a, float b);或: float add(float , float );再如:
4、char fun2(int i, char p1);4.1.3 函数的声明和调用C语言程序设计留意:函数声明与函数定义不同!main( ) int a,b,c; void print( ); scanf(“%d,%d”,&a,&b); c= max(a,b); print(); printf(“max=%d”,c);int max( int x, int y) int z; z=xy?x:y; return(z);void print( ) int i; for(i=0;i0; x-) y=y*x; return(y);C语言程序设计4.1.4 形式参数和实在参数一、形式参数和
5、实际参数 形式参数:定义函数时函数名后括号中的变量名,简称形参; 实际参数:调用函数时函数名后括号中的表达式,简称实参。C语言程序设计4.1.4 形式参数和实在参数二、参数值的传递二、参数值的传递 实参传值给形参实参传值给形参C语言程序设计main( ) int a,b,c; scanf(“%d,%d”,&a,&b); c = max(a, b); /*调用max函数*/ printf(“max=%d”,c); int max( int x , int y) int z; z=xy?x: y; return(z); 4.1.4 形式参数和实在参数C语言程序设计n关于形参和实参的
6、说明:n1. 实参可以是常量、变量或表达式, 如:c = max(3,a+b);n2. 定义函数时,必须指定形参的类型;n3. 实参与形参的类型应一致或兼容。n4. C语言规定,实参对形参的数据传递是“值传递” 。n5. 函数未调用时,形参并不占内存中的存储单元。在函数调用时,形参才被分配内存单元。调用结束后,形参所占的内存单元被释放。4.1.4 形式参数和实在参数C语言程序设计main( ) int a,b,c; scanf(“%d,%d”,&a,&b); c = max(a, b); printf(“max=%d”,c); int max( int x , int y) i
7、nt z; z=xy?x: y; return (z);abc58xy58z884.1.4 形式参数和实在参数returnC语言程序设计2. 函数值的类型 如:int max(int x,int y) char letter(char c1, char c2) double min(int x, double y)C语言默认函数返回值为int型。3. 如果函数值的类型和return语句中表达式 的值不一致,则以函数类型为准。如:4.1.4 形式参数和实在参数C语言程序设计main() float a, b; int c; scanf(“%f,%f”,&a,&b); c=max(
8、a,b); printf(“Max is %dn”,c);max(float x, float y) float z; z = xy? x: y; return (z);若输入的数据流如下:1.5, 2.5则输出的结果为:Max is 24.1.4 形式参数和实在参数C语言程序设计4. 可用“void ”定义“无类型函数。如:void printstar( ) printf(“*n”); void p_message( ) printf(“How do you do!n”); 4.1.4 形式参数和实在参数 前往前往C语言程序设计例1:写一个判断素数的函数,在主函数输入一个整数,输出是否是素数
9、的信息。分析:编写函数 prime(int n),其功能是判断n是否是素数,如是则返回1,否则返回0;编写main(),输入一个整数,调用prime函数,输出是否是素数的信息。程序清单:4.2 带自定义函数的程序设计 前往前往main( ) int m; scanf(“%d”,&m); if(prime(m) printf(“nTrue”); else printf(“nFlase”); prime( int n) int i, flag=1; for(i=2; i=n/2; i+) if(!(n% i) flag=0;break; return flag;prime( int n)
10、int i, flag=1; for(i=2; ib?a:b; return(c);main() int a=8; /* a局部变量*/ printf(“%d”,max(a,b);形参a,b作用范围局部变量a作用范围全局变量b作用范围printf(“%d,%d”,a,b); 前往前往C语言程序设计4.3.2 变量的生存期一、动态存储方式与静态存储方式静态存储方式:指在程序运行期间分配固定的存储空间的方式。动态存储方式:在程序运行期间根据需要进行动态的分配存储空间的方式。程序区静态存储区动态存储区内存中供使用的情况全局变量、静态量全局变量、静态量函数形式参数、自动变量、函数调用时的现场保护和返回
11、地址等C语言程序设计4.3.2 变量的生存期静态存储区:存储空间的分配在编译阶段进行,且存于其中的数据对象相对于程序的执行是永久的。动态存储区:存储空间的分配是在程序的运行过程中进行的。C语言程序设计n二、auto变量n调用函数时系统自动分配存储空间,在函数调用结束时自动释放这些存储空间,称这类局部变量为自动变量。n自动变量用关键字auto作存储类别的声明。它也可省。n三、用static声明局部变量n静态的n局部的4.3.2 变量的生存期C语言程序设计f(int a) auto int b=0; static int c=3; b=b+1; c=c+1; return(a+b+c);main(
12、 ) int a=2, i; for( i=0; i3; i+) printf(“%d”,f(a);第一次调用开始 0 3 b c 第一次调用结束 1 4 第二次调用开始 0 4 运行结果为:789第二次调用结束 1 5 第三次调用开始 0 5 第三次调用结束 1 6 4.3.2 变量的生存期C语言程序设计n阐明:n静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期都不释放。n 自动变量属于动态存储类别,在动态存储区内分配单元,函数调用结束后即释放。4.3.2 变量的生存期C语言程序设计n对静态局部变量在编译时赋初值,程序运行时,它已有初值,以后每次调用函数时不再重新赋
13、初值而只是保留次函数调用结束时的值。n 对自动变量赋初值,不是在编译时进行的,而是在函数调用时进行,每调用一次函数重新给一次初值。4.3.2 变量的生存期C语言程序设计n 对静态局部变量来说,如不赋初值,编译时自动赋初值0或空字符。对自动变量来说,如不赋初值,它的值是一个不确定的值。n 虽然静态局部变量在函数调用结束后仍然存在,但其他函数不能引用。4.3.2 变量的生存期C语言程序设计4.3.2 变量的生存期一般在下列情况时,使用局部静态变量:需要保留函数上一次调用结束时的值时;如果初始化后,变量只被引用而不改变其值时。C语言程序设计4.3.2 变量的生存期例8.18 打印1到5的阶乘值。in
14、t fac(int n) static int f=1; f=f*n; return(f) ; main( ) int i; for( i=1; i=5; i+) printf(“%d! =%dn”, i, fac(i); 运行结果:1! =12! =23! =64! =245! =120C语言程序设计n四、register变量n阐明:n1、只有局部自动变量和形式参数可作为register变量。n2、不能定义任意多个寄存器变量。n3、局部静态变量不能定义为寄存器变量。4.3.2 变量的生存期C语言程序设计n五、用extern声明外部变量n 在一个文件内声明外部变量n例:main( )n ext
15、ern A; /*外部变量声明*/n printf(“%d”,A); n n int A=13; /*定义外部变量*/n 4.3.2 变量的生存期 前往前往C语言程序设计例:用弦截法求方程x3-5x2+16x-80=0的根。方法如下:yx0 x1xx2f(x1)f(x)f(x2)计算x点的公式为:x=x1 f(x2)-x2 f(x1)f(x2)-f(x1)思绪:根据x1和x2两点的值求x的值,当f(x)10-5x就作为方程的近似根。C语言程序设计#include float f(float x) float y; y=(x-5.0)*x+16.0)*x-80.0); return y;定义函数
16、fC语言程序设计float xpoint(float x1,float x2) float y; y=(x1*f(x2)-x2*f(x1)/(f(x2)-f(x1); return y; 定义xpoint 函数,求弦与x轴的交点。C语言程序设计float root(float x1,float x2) int i; float x,y,y1; y1=f(x1); do x=xpoint(x1,x2); y=f(x); if (y*y1)0) y1=y;x1=x; else x2=x; while(fabs(y)=1e-5); return x; 定义root函数,求近似根C语言程序设计main
17、() float x1,x2,f1,f2,x; do printf(“input x1,x2:n”); scanf(“%f,%f”,&x1,&x2); f1=f(x1); f2=f(x2); while(f1*f20); x=root(x1,x2); printf(“x=%10.4fn”,x); C语言程序设计main函数 root函数 xpoint函数 f函数调用 root 函数 调用 xpoint 函数 调用 f 函数终了C语言程序设计 用牛顿迭代法求根。方程为ax3+bx2+cx+d=0,系数a、b、c、d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。牛顿
18、迭代法先给定方程f(x)=0一个较好的近似根x, 迭代公式: xn+1=xn-f(xn)/f (xn) C语言程序设计#include “math.h”float solut(float a, float b, float c, float d) float x=1,x0,f,f1; do x0=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() float a,b,c,d; printf(“n input a,b,c,dn”); scanf(“%f,%f,%f,%f”,&a,&b,&c,&d); printf(“5.2fx3+%5.2fx2+%5.2fx +%5.2f=0”,a,b,c,d); printf(“nX=%10
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教 八年级 语文 下册 第5单元《17.壶口瀑布 第1课时》课件
- 2025 网络基础中农业网络的精准农业与物联网应用课件
- 2026年矿山介绍合同(1篇)
- 广播通信铁塔生产项目可行性研究报告
- 刑法条文的理解和适用技巧
- 2026年及未来5年市场数据中国竹制一次性筷子行业市场深度研究及投资潜力预测报告
- 2025 高中信息技术数据与计算之计算思维在森林火灾数据监测分析中的应用课件
- 2025 高中信息技术数据与计算之算法的猴群优化算法课件
- 2026年及未来5年市场数据中国市政园林景观设计行业发展监测及投资前景展望报告
- 智能灌溉控制系统:原理、技术与应用实践
- 2026山东出版集团有限公司山东出版传媒股份有限公司招聘193人备考题库及答案详解(基础+提升)
- 职业危害事故处置及报告全流程培训
- 2026年无锡工艺职业技术学院单招职业技能考试题库有答案详解
- 物业服务标准与质量管理手册(标准版)
- 2025年监理工程师《案例分析(交通运输工程)》真题及答案
- 2026年全国高考体育单招考试模拟语文试题试题(含答案)
- GB/T 13462-2008电力变压器经济运行
- GB 7912-2010食品安全国家标准食品添加剂栀子黄
- 品质工程监理实施方案
- 2023年汉字听写大赛题库全部词语拼音解释
- GA/T 882-2014讯问同步录音录像系统技术要求
评论
0/150
提交评论