C函数的定义与调用.ppt_第1页
C函数的定义与调用.ppt_第2页
C函数的定义与调用.ppt_第3页
C函数的定义与调用.ppt_第4页
C函数的定义与调用.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例1.一多边形土地,其边长分别为 L1=100米, L2=130米,L3=100米, L4=140米, L5=140米,对角连线 L6=210米,L7=205米,求其面积。,L2,L1,L5,L6,1,2,3,引例,a,b,c,任意三角形,面积公式:,第九讲,s1=(l1+l5+l6)/2.0;,void main( ),a1=sqrt(s1*(s1-l1)*(s1-l5)*(s1-l6);,s2=(l2+l6+l7)/2.0;,aer=a1+a2+a3;,cout“Aer=”aer;,a2=sqrt(s2*(s2-l2)*(s2-l6)*(s2-l7);,s3=(l3+l4+l7)/2.0;,a3=sqrt(s3*(s3-l3)*(s3-l4)*(s3-l7);,程序:,int l1,l2,l3,l4,l5,l6,l7;float s1,s2,s3;,float a1,a2,a3,aer;,cinl1l2l3l4; cinl5l6l7;,#include “math.h” #include “iostream.h”,L2,L1,L5,L6,1,2,3,设想有这样的函数:,计算: sin30+cos45的值。,#include “math.h” #include “iostream.h”,coutsu;,su=sin(30.0*3.1/180)+cos(45.0*3.14/180.0);,float su;,sin(x)、 cos(x),void main(), int l1,l2,l3;,float s( ),aer( ); float sum=0,i=1,ss;,while(i3),ss=s(l1,l2,l3);,sum=sum+aer(ss,l1,l2,l3);,i=i+1;,printf(“%.2f”,sum);,void main( ),scanf(“%d%d%d”,主函数,int a,b,c;, float d;,d=(a+b+c)/2.0;,float s(a,b,c),return(d); ,float aer(x,a,b,c),float x;int a,b,c;, float aa;,aa=sqrt(x*(x-a)*(x-b)*(x-c);,return(aa);,#include “math.h”,#include”iostream.h”,自定义(子)函数,是用户定义的。好处:,将复杂的功能分解成若干简单的功能 , 便于实现逐步求精,增加程序的通用性,简化程序结构,便于阅读、调试,程序由函数构成,库函数,void main( ), int a=1,b=3,c;,c=max(a,b);,printf(“max=%d”,c); , int z;,else z=y;,return(z); ,主函数,自定义函数(子函数),主函数、,库函数、,自定义函数,程序的执行过程,主函数main,c=max(a,b);,结束,子函数max,如何定义,如何调用,if(xy)z=x;,int max(int,int);,从主函数开始执行,return或 ,数据联系,int max(int x,int y),#include”stdio.h”,一致:,函数的定义,函数首部,类型 函数名(形式参数表),函数值的类型,类型,函数体,变量定义,语句序列 ;,return(表达式);,通过return语句返回值,表达式的类型与定义类型的关系,函数值的类型,值的类型就是表达式的类型,不一致:,值的类型是定义的类型,函数首部,函数体,参数,包含类型说明,有返回值,无确定返回值,(只能返回一个值),(类型为void),(形参),函数的调用,注意,原则上实参和形参,在个数、类型和,顺序上一致。,主函数,带有函数名的表达式 或 函数语句,函数名(a1,a2,an),子函数体,RETURN或,GOTO,GOTO,子函数,:,:,数据联系, 为形参和内部变量分配单元, 参数传递,调用的过程, 执行, 返回,变量释放单元,实参和形参,形参,被调用前不占用存储单元,实参,占用存储单元,主调函数和被调函数之间的参数传递,主调函数,被调函数,调用时,实参,形参,数据传递,返回时,数据传递,(结果),被调用时分配存储单元,返回时释放存储单元,(待处理数据),数据联系,形参是简单变量,实参是简单变量,值传递:,实参是常量、表达式,实参的值传递给形参,内存中实参单元与形参单元是不同的单元, 因此,在执行一个被调函数时,形参的值如果发生变化,并不会改变主调函数的实参的值,单向传递,实参是简单变量,void swap(int x,int y),void main( ),例1 写结果, int t;,t=x;,x=y;,y=t; , int a=5,b=10;,printf(“%d,%d”,a,b);,swap(a,b);,printf(“%d,%d”,a,b); ,5,10,5,被调函数,主调函数,5,10,实参,形参及内部变量,10,5,10,5,5,10,#include “stdio.h”,实参是表达式、常量,例2 写结果,void main( ), int x=2,y=3,z;,z=try(x,5);,printf(“(2)x=%dy=%dz=%dn”,x,y,z); ,int try(int x,int y), float z;,z=(x+y)/2.0;,printf(“(1)x=%dy=%dz=%.2fn”,x,y,z);,(1)x=4y=25z=14.50,(2)x=2y=3z=14,2,3,实参,形参 内部变量,5,2,int try(int,int);,x*=x;y*=y;,return z; ,主调函数,被调函数,4,25,14.5,14,14,#include “stdio.h”,数据联系小结,形参类型,要求实参的类型,传递的信息,通过调用函数能否改变实参的值,简单变量,简单变量,表达式、常量,变量的值,不能,程序举例,例3 编写函数把任意十进制正整数转换成二进制数。,main( ),读入m,zh,调用zh,输 出,程序结构,转换,10,2,5,0,2,2,1,2,1,0,2,0,1,a0,a1,a2,a3,(x=10),商,x,i=-1,i:,二进制数的位数,x!=0,ai=x%2,x=x/2,i+,函数类型及参数,名字:zh,类型:,int,形参:,x,数组a,int,int,int zh(int x,int a ), int i=-1;,while(x!=0), i+;ai=x%2;,return(i);,void main( ), int a16,m,k,j;,printf(“nInput m:”);,scanf(“%d”,k=zh(m,a);,for(j=k;j=0;j-),printf(“%d”,aj); ,x=x/2;,返回值是i,原始数据,结果,#include “stdio.h”,#include”iostream.h” void print_star( ) cout“*n”; ,* Hello C+! *,例4.写结果,void print_mesg( ) cout“ Hello C+!n”;,void main( ) print_star( ); print_mesg( ); print_star( );,程序举例,例5. 设计一个求阶乘的子函数。 求1-10阶乘。,int i;float a;,a=1;,for(i=1;i=n;i+),a=a*i;,return(a); ,float JC( int n),#include”iostream.h” void main( ),int m;,for(m=1;m=10; m+), f=JC(m);,coutm“!=”f;,cout“n”;,float JC(int ),f;,子函数,程序举例,例6 判断素数的函数,int sushu(int num), int k, leap=1;,for(k=2;knum;k+), if(num%k= =0),leap=0; ,return (leap);,#include”iostream.h” void main(), int num, leap;,cinnum;,leap=sushu(num);,if(leap=1) coutnum“是素数n”;,else coutnum“非素数n”; ,int sushu(int);,程序举例,例如: main函数调用sum函数,main ( ) int i, j ; i=sum ( 2, 3 ) ; j=sum ( 3, i ) ; printf ( “ i=%d, j=%dn ”, i, j ); ,int sum ( x, y ) int x ; int y ; return ( x+y ) ; ,结果:i=5,j=8,函数上机过程,主函数和子函数在同一个源文件中 和以前一样。 主函数、子函数在不同的源文件中 即可单独进行编辑、编译。要求: 在一个源文件中使用 #include”文件名.c”,#include”k37-2.c” int sum ( x, y )

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论