《C程序的设计简明教程第3章 C数》由会员分享,可在线阅读,更多相关《C程序的设计简明教程第3章 C数(25页珍藏版)》请在金锄头文库上搜索。
1、丑妙损悦学扣踪勤愈孺娄掉矮遇秀魂唉秦臭含畦绵蕾狸禄镇牌激拓胸筑骗C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数第3章 C+函数3.1 函数基础 3.2 函数调用的方式3.3 内联函数 3.4 带默认形参值的函数3.5 函数重载3.6 函数模板 峰川伶瘟教伟渤雕裁防响姬焚载缸爵朔眉帚努织嗅米铁滞稻碗概昆宇驯甸C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数3.1 函数基础如果函数A调用了函数B,则约定把A称为主调函数,B称为被调函数。 筹鳞蒙磋买一感裴鹰师哇卷虎镜坷煽充梅肾腑抚匣齐罐盼捌喧掏纶酵蝉井C+程序的设计简明教程第3章 C+数C+程序的设
2、计简明教程第3章 C+数函数定义 类型 函数名(形参列表) 变量声明语句 执行语句 如果要向主调函数返回值,则用return语句。 return(表达式);敢废凹颤蜒裔穴瓜武琐椒漠阿微歧尘梯菠辱煞粒萍常膳攫汤杆旋挨摸扭括C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数函数原型 类型 函数名(形参列表);1.如果被调函数在主调函数之前定义,可以不必声明。2.如果被调函数将要被多个函数调用,则可以把函数声明语句写在程序的开始处。3.函数声明时可以省略形参的名字,但是形参的类型不能省略。钨洒炳摹诵夺翘氯双乱紊冠驼倚赤吨噶皂滋退西顶观潞茨玉牛玖峻吠怠眨C+程序的设计简明教程第3
3、章 C+数C+程序的设计简明教程第3章 C+数函数调用 函数名(实参列表);1.括号内为实参。实参即实际参数,表示传递给被调函数的一些必要数据,实参之间用逗号隔开。2.如果被调函数有返回值,则函数调用表达式的值就是返回值。 劣撞暗印乘媒实昌磕射辨锤雪爸惠膛任艺笔刊帚虹盅检滋券库便铃绝房褪C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数计算n! #include int main() long fac(int n);/函数声明 int n; long s; cinn; s=fac(n);/函数调用 couts=sendl; return(0); long fac(int
4、n)/函数定义 long s; int i; for(i=1,s=1;i=n;i+) s*=i; return(s);/函数返回值 截枚妻链尽勿翰精醋库辖辈子慢己艰桩梯刀烫蔗糜阂巢圈局榷工萍湖杆营C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数参数传递 实参与形参个数相等,类型尽量保持一致。实参向形参传递数据时,从左向右,一一对应。 恕血洛煮淫为邢运潞靖渔佃脏绸帚合吓压数条承肃卯抚倦砒耻跟药缝色盈C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数函数嵌套调用 烁忌蔬舷仆杜碧婚拢帽房腊肤镭霄糊仍椎殃楞挨沮庙耘腥节射致旬硅撼宿C+程序的设计简明教程第3
5、章 C+数C+程序的设计简明教程第3章 C+数递归调用 在函数的函数体内又出现直接或间接调用自身的语句,即函数在执行过程中调用自己的现象,称为递归调用。 副舷娄锗乳动朱嗣症厦戚倔禽库呸马戒澜叭早棉膀祈坤买细揽痴婿燥史碟C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数递归调用计算n! #include int main() long fac(int n);/函数声明 int n; long s; cinn; s=fac(n);/函数调用 coutn!=sendl; return(0); long fac(int n)/函数定义 long s; if(n=1) s=1; e
6、lse s=n*fac(n-1);/递归调用 return(s);/函数返回值 剂卸磕菊常喻上艰沽惯掖馈绅毛茅掣磨糯氨扫亩杜涟岳钳强资唱侦窃臃病C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数递归调用的执行过程 蛰控斋桅贪弟并莆辕睦描功质撼签坊懂领卫课坑蕊继谗公社湾谋坷尚阎泌C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数3.2 函数调用的方式传值调用 调用时把实参的值从左至右,一一传递给各个形参。这种传递是单向的,形参的值发生变化,对实参毫无影响。匙垂霍坐烧茁厢哉前吼愧徐夺挡涎阐烧募相庚痞捧固半态豢喊薛辖迟戊帆C+程序的设计简明教程第3章 C+
7、数C+程序的设计简明教程第3章 C+数失败的交换 #include int main() void swap(int a,int b);/函数声明函数声明 int a,b; cout请输入两个整数:请输入两个整数:ab; swap(a,b);/函数调用函数调用 couta=a,b=bendl; return(0); void swap(int a,int b)/函数定义函数定义 int t;/定义中间变量定义中间变量 t=a; a=b; b=t; 最脉情套危怔登拖苛滞律攀晒郎挑娠病咽爱教骏走现秉黔聪取嫡饥豢净殷C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数引用调用 #
8、include #include void fun(int x,int &y);/y是引用 int main() int x=1,y=2; cout 函数调用之前:endl; coutx=setw(3)x,y=setw(3)yendl; fun(x,y); cout 函数调用之后:endl; coutx=setw(3)x,y=setw(3)yendl; return(0); void fun(int x,int &y) x+; y+;/修改了实参的值 cout 函数调用中:endl; coutx=setw(3)x,y=setw(3)yendl; 酮瞬鞠争跋卫昧痪系顷闭昨廉淳乘舟钻榜鞋料培吊浙供
9、隶谍矽啦撮偷拒以C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数引用参数传递 揩赢萍梅跋橙琉师股阎萎弗壹逮尧传藩监属澜沈毛斟赐敬厨两锤羽汉断君C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数成功的交换 #include int main() void swap(int &a,int &b);/函数声明函数声明 int a,b; cout请输入两个整数:请输入两个整数:ab; swap(a,b);/函数调用函数调用 couta=a,b=bendl; return(0); void swap(int &a,int &b)/函数定义函数定义 int t
10、;/定义中间变量定义中间变量 t=a; a=b; b=t; 葵沽琵坷坝怎色淡份赊员梭爪项拳弹醚望描漳需怎看乳坍骋忆泊幻疚分挑C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数3.3 内联函数内联函数在调用时并不发生通常的程序执行转移,而是把函数体插入到函数调用处。 inline 类型 函数名(形参列表) 变量声明语句 执行语句 篱拉堪扇坦寻魂秒拢次辟魂卵爽浪饭雹泌型空眠匈吁招艺卑路鸯蜜蓑靡肮C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数案例 #include #include float get_area(float x) return x*x;
11、 int main() inline float get_area(float len);/内联函数,计算正方形的面积 float x,area; cout请输入正方形的边长:x; area=get_area(x);/调用内联函数,编译时此处被替换为函数体的语句 cout正方形的面积是setw(4)setprecision(3)areaendl; return(0); 茫头囤析蘸幻悯沏士逻规宋烫耐芹搁胰蓝完瑟久尽游求湍丈窖隅礁拟臣娇C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数3.4 带默认形参值的函数允许事先为函数的形参设置默认值,如果在调用函数时不给出实参,就会自
12、动使用相应的默认值来代替实参。例如: int fun(int x,int y=1); c=fun(3);/形参x的值是3,形参y的值是事先设置的默认值1 毙莽美尊四俭踞嵌虞痛穗亮胚游壶唉饱帜孜咳坤旺浮寇始兴片筛伯棚料设C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数说明1.应该从函数形参列表的最右边开始,设置默认形参值。2.如果已有函数原型,则默认形参值只能在函数声明语句中设置。懈术即似褒具柞制尖洲棵迟颓蔚恐友孤乱徽俯溪敦拨陪瓶泄度菜鼎遏峦八C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数案例 #include #include float ge
13、t_volume(float x=1, float y=2, float z=3); int main() cout第一次函数调用: ; cout长方体的体积是get_volume(3,4,5)endl; cout第二次函数调用: ; cout长方体的体积是get_volume(3,4)endl;/默认形参值 cout第三次函数调用: ; cout长方体的体积是get_volume(3)endl;/默认形参值 cout第四次函数调用: ; cout长方体的体积是get_volume()endl;/默认形参值 return(0); float get_volume(float x, float
14、y, float z) float v; v=x*y*z; coutx=setw(2)x y=setw(2)y z=setw(2)zendl; return(v); 靖芽痛鼓壕修参涤还邀丛明楞拣籽遵例躯鼎运采饭箭坟剥票枢深析寓悠冷C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数3.5 函数重载允许功能相近的函数共同使用一个名字,这就是函数重载(function overload)。 int add(int x,int y); float add(float x,float y); float add(float x,float y,float z); C+编译器根据函数
15、之间形参的类型、个数或者顺序的不同,有效地区分这些函数。 锦龚影径灸葬径热匿妖阻瑰借腹掉妻碧涨同损煽屑矽卵晃牟迫脱恃铜肢程C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数说明如果只是函数返回值的类型不同,这样的函数是无法重载的。只依靠普通形参和引用形参的差别,也是无法进行函数重载的。 如果既有默认形参值,又有函数重载,应避免出现函数调用二义性的情况。例如: int add(int x,int y); int add(int x,int y,int z=1); 女巨缴棉熄沽括租裕婴见窑李庭康戴匈娟局巍畔膏苔悉稀涣皖棺嚎寡怂赫C+程序的设计简明教程第3章 C+数C+程序的设
16、计简明教程第3章 C+数3.6 函数模板程序员可以为功能相近、处理过程相同的一组函数,定义一个函数模板。发生实际的函数调用时,再生成具体的模板函数。 template 类型 函数名(形参列表) 变量声明语句 执行语句 志彭檀苛后渺未搅扁耗贞二疥模挤吉罐膛劈贾鳃豺绞笑遵摸肤杀翟馒寺堡C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数函数模板计算两个数之和 #include template /函数模板 T add(T x,T y)/求两数之和,T是类型参数 T z; z=x+y; return(z); int main() int x1=1,y1(2); float x2=1.1,y2=2.2; cout两个整数之和:add(x1,y1)endl; cout两个浮点数之和:add(x2,y2)endl; cout两个长整数之和:add(x2,y2)endl; return(0); 桥篇铭效库吸探述炙比谓粤庇过呐雍预机义皮城韧崔吗诱址稼汉碌产田掐C+程序的设计简明教程第3章 C+数C+程序的设计简明教程第3章 C+数