实例阅读实例程序了解C语言程序的执行过程.pptx

上传人:一*** 文档编号:77808283 上传时间:2023-03-16 格式:PPTX 页数:40 大小:296.04KB
返回 下载 相关 举报
实例阅读实例程序了解C语言程序的执行过程.pptx_第1页
第1页 / 共40页
实例阅读实例程序了解C语言程序的执行过程.pptx_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《实例阅读实例程序了解C语言程序的执行过程.pptx》由会员分享,可在线阅读,更多相关《实例阅读实例程序了解C语言程序的执行过程.pptx(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、实例阅读实例程序了解实例阅读实例程序了解C语言程序的执行语言程序的执行过程过程#include#include#include#include#define PI 3.14159#define PI 3.14159float sup_area(float r);float sup_area(float r);float volume(float r);float volume(float r);main()main()float a=-5,b,c,d;float a=-5,b,c,d;b=fabs(a);b=fabs(a);c=sup_area(b);c=sup_area(b);d=volum

2、e(b);d=volume(b);printf(c=%f,d=%fn,c,d);printf(c=%f,d=%fn,c,d);预处理命令预处理命令 函数原型说函数原型说明明 主主函函数数 第1页/共40页float sup_area(float r)float sup_area(float r)float s;float s;s=4*PI*r*r;s=4*PI*r*r;return s;return s;float volume(float r)float volume(float r)float v;float v;v=4.0/3.0*PI*r*r*r;v=4.0/3.0*PI*r*r*r;

3、return v;return v;sup_area函数的定函数的定义义(计算球计算球的表面积的表面积)volume函数的定函数的定义义(计算计算球的体积球的体积)运行结果:运行结果:c=314.158997,d=523.598328第2页/共40页 fabs函数函数 其它函数其它函数a=-5;a=-5;b=fabs(a);b=fabs(a);c=sup_area(b);c=sup_area(b);d=volume(b);d=volume(b);主函数主函数文件文件math.hs=4*PI*r*r;s=4*PI*r*r;return s;return s;sup_area函数函数v=4.0/3

4、.0*PI*r*r*r;v=4.0/3.0*PI*r*r*r;return v;return v;volume函数函数第3页/共40页l l形参与实参形参与实参 形式参数:定义函数时函数名后面括形式参数:定义函数时函数名后面括号中的变量名号中的变量名 实际参数:调用函数时函数名后面括实际参数:调用函数时函数名后面括号中的表达式号中的表达式c=max(a,b);(main 函数)(max 函数)max(int x,int y)int z;z=xy?x:y;return(z);例 比较两个数并输出大者main()int a,b,c;scanf(%d,%d,&a,&b);c=max(a,b);pri

5、ntf(Max is%d,c);max(int x,int y)int z;z=xy?x:y;return(z);形参实参5.2函数参数及其传递方式第4页/共40页说明:实参必须有确定的值形参必须指定类型形参与实参类型一致,个数相同若形参与实参类型不一致,自动按形参类型转换函数调用转换形参在函数被调用前不占内存;函数调用时为形参分配内存;调用结束,内存释放形参与实参形式参数:定义函数时函数名后面括号中的变量名实际参数:调用函数时函数名后面括号中的表达式5.2、函数参数及其传递方式第5页/共40页 值传递值传递方式方式l l方式:函数调用时方式:函数调用时,为形参分配单元为形参分配单元,并将并将

6、实参的值实参的值复制复制到形参中;调用结束,形参到形参中;调用结束,形参单元被释放,实参单元仍保留并维持原值单元被释放,实参单元仍保留并维持原值l l特点:特点:形参与实参占用形参与实参占用不同不同的内存单元的内存单元 单向单向传递传递5.2、函数参数及其传递方式第6页/共40页711x:y:调用前:调用结束:711x:y:/*ch7_2.c*/#include main()int x=7,y=11;printf(x=%d,ty=%dn,x,y);printf(swapped:n);swap(x,y);printf(x=%d,ty=%dn,x,y);swap(int a,int b)int t

7、emp;temp=a;a=b;b=temp;调用:711a:b:711x:y:swap:711x:y:117a:b:temp例例 交换两个数交换两个数第7页/共40页课课堂堂练练习习:调调用用自自定定义义函函数数计计算算1n1n的的和和编编写写程程序序,输输入入n的的值值,并并调调用用自自己己编编写写的的函函数计算数计算1至至n的和。的和。主模块主模块计算计算1至至n的和的和第8页/共40页开始开始定义定义n和和a输入输入n的值的值调用调用自编函数自编函数计算计算1至至n之和之和输出结果输出结果结束结束主函数的流程图主函数的流程图主函数框架:主函数框架:main()int n=0,a=0;pr

8、intf(Input n:);scanf(%d,&n);a=1至至n的和的和 printf(%dn,a);第9页/共40页自编函数的流程图自编函数的流程图是是否否in给给i赋赋1s=s+ii增增1入口入口定义定义i和和s返回返回s自编函数框架:自编函数框架:int sum_n(int n)定义变量定义变量 计算计算1至至n的和的和 将结果告知主函数将结果告知主函数 是是否否in给给i赋赋1s=s+ii增增1入口入口定义定义i和和s返回返回s第10页/共40页#include int sum_n(int n);main()int n=0,a=0;printf(Input n:);scanf(%d

9、,&n);a=sum_n(n);printf(The sum(1-%d)is:%dn,n,a);函数的原型说明函数的原型说明 实参实参第11页/共40页int sum_n(int n)int i=0,s=0;for(i=1;i=n;i+)s=s+i;return s;函数名函数名第12页/共40页int sum_n(int n)int i=0,s=0;for(i=1;i=n;i+)s=s+i;return s;形参形参第13页/共40页int sum_n(int n)int i=0,s=0;for(i=1;i=n;i+)s=s+i;return s;通知计算结果通知计算结果第14页/共40页i

10、nt sum_n(int n)int i=0,s=0;for(i=1;i=n;i+)s=s+i;return s;计算结果的类型计算结果的类型第15页/共40页作作业业:调调用用自自定定义义函函数数进进行行四四则则运运算算编编写写程程序序,输输入入2个个数数以以及及加加、减减、乘乘、除除中中的的某某运运算算符符号号,并并调调用用自自己己编编写写的的函函数数计计算算相相应应的的结果。结果。第16页/共40页main()int a=0,b=0;char sym=0;float c=0.0;scanf(%d%c%d,&a,&sym,&b);c=cal(a,sym,b);printf(%d%c%d=%

11、fn,a,sym,b,c);float cal(int a,char sym,int b)#include float cal(int a,char sym,int b);空函数空函数 编译无误时编写编译无误时编写cal函数函数主调函数主调函数被调函数被调函数自自顶顶向向下下,逐逐步步细细化化第17页/共40页float cal(int a,char sym,int b)float c=0.0;switch(sym)case+:c=a+b;return c;case-:c=a-b;return c;case*:c=a*b;return c;case/:if(b!=0)c=(float)a/b;

12、return c;else printf(Devided by 0.n);getch();exit(0);第18页/共40页调用函数进行四则运算的过程调用函数进行四则运算的过程0ba0sym0c主主调调函函数数2538*第19页/共40页调用函数进行四则运算的过程调用函数进行四则运算的过程0ba0sym2538*basym950c0c主主调调函函数数被被调调函函数数2538*950第20页/共40页l l嵌套调用嵌套调用C C规定:规定:函数定义不可嵌套函数定义不可嵌套,但,但可以嵌可以嵌套调用套调用函数函数main()调用函数a结束a函数b函数调用函数b5.35.3、函数的嵌套与递归调用函数

13、的嵌套与递归调用第21页/共40页#include int dif(int x,int y,int z);int max(int x,int y,int z);int min(int x,int y,int z);void main()int a,b,c,d;scanf(%d%d%d,&a,&b,&c);d=dif(a,b,c);printf(Max-Min=%dn,d);int dif(int x,int y,int z)return max(x,y,z)-min(x,y,z);int max(int x,int y,int z)int r;r=xy?x:y;return(rz?r:z);i

14、nt min(int x,int y,int z)int r;r=xy?x:y;return(rz?r:z);main()调用函数dif输出结束dif函数max函数调用函数max调用函数minmin函数例例 求三个数中最大数和最小数的差值求三个数中最大数和最小数的差值第22页/共40页练习:用嵌套调用的方法进行计算练习:用嵌套调用的方法进行计算编编写写fac函函数数,该该函函数数的的功功能能是是计计算算n!,再再调调用用该该函函数数,计计算算1!+3!+5!+19!的值。的值。第23页/共40页计算计算n!的函数代码框架:的函数代码框架:float fac(int n)int i=0;floa

15、t f=1.0;计算计算n!将结果告知主调函数将结果告知主调函数此函数的主调函数是此函数的主调函数是sum 第24页/共40页sum函数的框架:函数的框架:float sum(int n)int i=0;float s=0.0;计算计算fac(1)、fac(3)、fac(n)之和之和 将结果告知主调函数将结果告知主调函数 此函数的主调函数是此函数的主调函数是main 第25页/共40页#include float fac(int n);float sum(int n);main()float s=0;s=sum(19);printf(s=%.0fn,s);第26页/共40页float sum(

16、int n)int i=0;float s=0.0;for(i=1;i=n;i=i+2)s=s+fac(i);return s;嵌套调用嵌套调用 第27页/共40页float fac(int n)int i=0;float f=1.0;for(i=1;i=n;i+)f=f*i;return f;第28页/共40页定义:函数直接或间接的调用自身叫函数的递归调用f()调f调f2调f1f1()f2()说明C编译系统对递归函数的自调用次数没有限制每调用函数一次,在内存堆栈区分配空间,用于存放函数变量、返回值等信息,所以递归次数过多,可能引起堆栈溢出int f(int x)int y,z;z=f(y);

17、.return(2*z);int f1(int x)int y,z;z=f2(y);.return(2*z);int f2(int t)int a,c;c=f1(a);.return(3+c);递归调用递归调用第29页/共40页#include int fac(int n)int f;if(n0)printf(n0,data error!);else if(n=0|n=1)f=1;else f=fac(n-1)*n;return(f);main()int n,y;printf(Input a integer number:);scanf(%d,&n);y=fac(n);printf(%d!=%

18、15d,n,y);例例 求求n n的阶乘的阶乘第30页/共40页变量的属性数据类型:变量所持有的数据的性质(操作属性)存储属性存储器类型:寄存器、静态存储区、动态存储区生存期:变量在某一时刻存在-静态变量与动态变量作用域:变量在某区域内有效-局部变量与全局变量变量的存储类型auto -自动型register-寄存器型static -静态型extern -外部型变量定义格式:存储类型 数据类型 变量表;概述变量是对程序中数据的存储空间的抽象如:int sum;auto int a,b,c;register int i;static float x,y;5.4、变量的存储属性第31页/共40页 局

19、部变量局部变量-内部变量内部变量l l定义:在定义:在函数内定义函数内定义,只在本函数内有效只在本函数内有效l l说明:说明:mainmain中定义的变量只在中定义的变量只在mainmain中有效中有效 不同函数中同名变量,占不同内存单不同函数中同名变量,占不同内存单元元 形参属于局部变量形参属于局部变量 可定义在复合语句中有效的变量可定义在复合语句中有效的变量 局部变量可用存储类型局部变量可用存储类型:auto auto register static register static (默认为(默认为autoauto)float f1(int a)int b,c;.char f2(int x

20、,int y)int i,j;main()int m,n;.a,b,c有效x,y,i,j有效m,n有效例 不同函数中同名变量main()int a,b;a=3;b=4;printf(main:a=%d,b=%dn,a,b);sub();printf(main:a=%d,b=%dn,a,b);sub()int a,b;a=6;b=7;printf(sub:a=%d,b=%dn,a,b);例 复合语句中变量#define N 5main()int i;int aN=1,2,3,4,5;for(i=0;iN/2;i+)int temp;temp=ai;ai=aN-i-1;aN-i-1=temp;fo

21、r(i=0;iN;i+)printf(%d ,ai);运行结果:5 4 3 2 1例 复合语句中变量#define N 5main()int i;int aN=1,2,3,4,5;for(i=0;iN/2;i+)int temp;temp=ai;ai=aN-i-1;aN-i-1=temp;for(i=0;iN;i+)printf(%d ,ai);例 不同函数中同名变量main()int a,b;a=3;b=4;printf(main:a=%d,b=%dn,a,b);sub();printf(main:a=%d,b=%dn,a,b);sub()int a,b;a=6;b=7;printf(sub

22、:a=%d,b=%dn,a,b);运行结果:main:a=3,b=4sub:a=6,b=7main:a=3,b=4局部变量与全局变量局部变量与全局变量第32页/共40页5.4.1 内部变量和外部变量内部变量和外部变量5.4.2 动动态态存存储储变变量量和和静静态态存储变量存储变量5.4、变量的存储类别返回返回第33页/共40页5.4.1 内部变量和外部变量阅阅读读下下面面程程序序,观观察察变变量量定定义义的的位位置置,分分析析程序的运行结果。程序的运行结果。第34页/共40页#include int a=3,b=5;max(int a,int b)int c;c=ab?a:b;return(c

23、);main()int a=8,z;Z=max(a,b);printf(max=%d,z);运行结果:max=8例例 外部变量与局部变量外部变量与局部变量第35页/共40页#include void fun(int c);int a=3,b=5,c=0;main()int c=1;fun(c);printf(a=%d,b=%d,c=%dn,a,b,c);void fun(int c)int a=1;a=2*a;int c=2;b=a+b+c;c=c+5;printf(a=%d,b=%d,c=%dn,a,b,c);外部变量外部变量 内部变量内部变量 内部变量内部变量 内部变量内部变量 运行结果运

24、行结果:a=2,b=9,c=6a=3,b=9,c=1 第36页/共40页 存储方式存储方式l l静态存储:程序运行期间分配固定存储空静态存储:程序运行期间分配固定存储空间间l l动态存储:程序运行期间根据需要动态分动态存储:程序运行期间根据需要动态分配存储空间配存储空间 内存用户区内存用户区程序区静态存储区动态存储区全局变量、局部静态变量形参变量局部动态变量(auto register)函数调用现场保护和返回地址等生存期静态变量:从程序开始执行到程序结束动态变量:从包含该变量定义的函数开始执行至函数执行结束 5.4.2动态变量与静态变量第37页/共40页5.4.2 5.4.2 动动态态存存储储变变量量和静态存储变量和静态存储变量阅阅读读下下面面程程序序,观观察察变变量量的的开开辟辟与与释释放放时时间间,分析程序的运行结果。分析程序的运行结果。第38页/共40页#include void fun();main()int i=0;for(i=1;i=3;i+)fun();void fun()auto int a=3;static int b=3;a=a+2;b=b+2;printf(a=%d,b=%dn,a,b);动态存储变量动态存储变量 运行结果运行结果:a=5,b=5a=5,b=7a=5,b=9静态存储变量静态存储变量第39页/共40页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁