您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > C++函数的定义与调用
例1.一多边形土地,其边长分别为L1=100米,L2=130米,L3=100米,L4=140米,L5=140米,对角连线L6=210米,L7=205米,求其面积。L2L1L5L6L3L4L7123引例abc任意三角形面积公式:))()((2csbsassAERcbas第九讲s1=(l1+l5+l6)/2.0;voidmain()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));程序:{intl1,l2,l3,l4,l5,l6,l7;floats1,s2,s3;floata1,a2,a3,aer;cinl1l2l3l4;cinl5l6l7;#include“math.h”#include“iostream.h”L2L1L5L6L3L4L7123))()((),,,(2),,(cxbxaxxcbaxaercbacbas设想有这样的函数:计算:sin30º+cos45º的值。#include“math.h”#include“iostream.h”coutsu;}su=sin(30.0*3.1/180)+cos(45.0*3.14/180.0);{floatsu;sin(x)、cos(x)voidmain(){intl1,l2,l3;floats(),aer();floatsum=0,i=1,ss;while(i3)ss=s(l1,l2,l3);sum=sum+aer(ss,l1,l2,l3);i=i+1;}printf(“%.2f”,sum);voidmain()}{scanf(“%d%d%d”,&l1,&l2,&l3);主函数inta,b,c;{floatd;d=(a+b+c)/2.0;floats(a,b,c)return(d);}floataer(x,a,b,c)floatx;inta,b,c;{floataa;aa=sqrt(x*(x-a)*(x-b)*(x-c));return(aa);}#include“math.h”#include”iostream.h”自定义(子)函数是用户定义的。好处:将复杂的功能分解成若干简单的功能,便于实现逐步求精增加程序的通用性简化程序结构,便于阅读、调试程序由函数构成库函数voidmain(){inta=1,b=3,c;c=max(a,b);printf(“max=%d”,c);}{intz;elsez=y;return(z);}主函数自定义函数(子函数)主函数、库函数、自定义函数•程序的执行过程主函数mainc=max(a,b);结束子函数max如何定义如何调用if(xy)z=x;intmax(int,int);从主函数开始执行return或}数据联系intmax(intx,inty)#include”stdio.h”一致:函数的定义intmax(intx,inty){intz;if(xy)z=x;elsez=y;return(z);}•函数首部[类型]函数名([形式参数表])函数值的类型–类型•函数体{变量定义语句序列;}return(表达式);通过return语句返回值表达式的类型与定义类型的关系•函数值的类型值的类型就是表达式的类型不一致:值的类型是定义的类型函数首部函数体–参数包含类型说明voidps(){cout“\n*************”;}–有返回值–无确定返回值(只能返回一个值)(类型为void)(形参)函数的调用实参代替形参注意原则上实参和形参在个数、类型和顺序上一致。调用过程:主函数带有函数名的表达式或函数语句函数名(a1,a2,…,an)子函数体RETURN或}GOTOGOTO子函数::数据联系为形参和内部变量分配单元参数传递•调用的过程执行返回,变量释放单元•实参和形参–形参被调用前不占用存储单元–实参占用存储单元主调函数和被调函数之间的参数传递主调函数被调函数调用时实参形参返回时(结果)被调用时分配存储单元返回时释放存储单元(待处理数据)数据联系•形参是简单变量–实参是简单变量值传递:–实参是常量、表达式实参的值传递给形参内存中实参单元与形参单元是不同的单元,因此,在执行一个被调函数时,形参的值如果发生变化,并不会改变主调函数的实参的值单向传递实参是简单变量voidswap(intx,inty)voidmain()例1写结果{intt;t=x;x=y;y=t;}{inta=5,b=10;printf(“%d,%d”,a,b);swap(a,b);printf(“%d,%d”,a,b);}abx5105被调函数主调函数5,10y实参形参及内部变量t1051055,10#include“stdio.h”实参是表达式、常量例2写结果voidmain(){intx=2,y=3,z;z=try(x,5);printf(“(2)x=%dy=%dz=%d\n”,x,y,z);}inttry(intx,inty){floatz;z=(x+y)/2.0;printf(“(1)x=%dy=%dz=%.2f\n”,x,y,z);(1)x=4y=25z=14.50(2)x=2y=3z=14xz2y3实参形参内部变量xy52inttry(int,int);x*=x;y*=y;returnz;}主调函数被调函数425z14.5临时1414#include“stdio.h”数据联系小结形参类型要求实参的类型传递的信息通过调用函数能否改变实参的值简单变量简单变量表达式、常量变量的值不能#include”iostream.h”voidprint_star(){cout“***************\n”;}************************HelloC++!************************例4.写结果voidprint_mesg(){cout“HelloC++!\n”;}voidmain(){print_star();print_mesg();print_star();}程序举例例5.设计一个求阶乘的子函数。求1-10阶乘。{inti;floata;a=1;for(i=1;i=n;i++)a=a*i;return(a);}floatJC(intn)#include”iostream.h”voidmain()intm;for(m=1;m=10;m++){f=JC(m);coutm“!=”f;cout“\n”;}}{floatJC(int),f;子函数程序举例例6判断素数的函数intsushu(intnum){intk,leap=1;for(k=2;knum;k++){if(num%k==0)leap=0;}return(leap);#include”iostream.h”voidmain(){intnum,leap;cinnum;leap=sushu(num);}if(leap==1)coutnum“是素数\n”;elsecoutnum“非素数\n”;}intsushu(int);程序举例P106三1,2,3,4,5
本文标题:C++函数的定义与调用
链接地址:https://www.777doc.com/doc-3357963 .html