




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章语句和函数,本章要点,掌握C+的基本语句明确选择结构和循环结构的条件构成掌握函数的定义和调用理解和掌握函数的参数传递、函数的重载和函数的默认参数较熟练地使用C+的语句和函数进行程序设计,3.1赋值语句,3.1.1简单赋值语句=;3.1.2复合赋值语句=;等价于=;,3.2选择语句,3.2.1if语句,1if语句语法形式:,如果“条件”为“真”,则执行“语句”,if(),其执行过程如图3-1所示,例如:if(xc,2.if-else语句语法形式:,if()else,如果“条件”为“真”,则执行“语句1”;否则执行“语句2”,如图3-2所示,例如:if(a+bc,3.嵌套的if语句语法形式:if()elseif()elseif()else,【例3-3】已知符号函数:-1(x0)要求编一程序,输入一个x值,输出y值。,方法1:嵌套在else子句中#includeiostream.hvoidmain()intx,y;coutx;内嵌ifelseif(x0)y=-1;elseif(x=0)y=0;elsey=1;cout“nx=”x“y=”yx;内嵌ifelseif(x!=0)if(x0)y=-1;elsey=1;elsey=0;cout“nx=”x“y=”yscore;if(score100)cout成绩输入有误;return;temp=score/10;switch(temp)case10:case9:coutAendl;break;case8:coutBendl;break;case7:coutCendl;break;case6:coutDendl;break;default:coutEendl;break;,3.3循环语句,3.3.1while语句语法形式:,while(),如果表达式为真(true),则执行循环体语句。然后重新计算表达式的值,并再次判断;如果表达式的值为假(false),则退出循环结构。,【例3-5】利用while语句求,计算1+2+100的值,并打印计算结果。,#includeiostream.hvoidmain()intSum,i;Sum=0;i=1;while(i=100)Sum+=i;i+;coutSumisSumendl;,3.3.2do-while语句,语法形式:,dowhile();,先执行循环体语句,再判定表达式。若表达式的值为非0,则再次执行循环体语句,如此反复,直到表达式的值为0结束循环,并转到下一条语句执行,【例3-6】用do-while语句计算1+2+100。,#includeiostream.hvoidmain()intSum,i;Sum=0;i=1;doSum+=i;i+;while(i=100);coutSumisSumendl;,3.3.3for语句,语法形式:C+的for循环是循环语句中最具特色的。它功能较强、灵活多变和使用广泛。,for(;),初始表达式是设置循环控制变量的初值;条件是bool类型,作为循环控制条件;变量增值表达式是设置循环控制变量的增值(正负均可)。,【例3-7】用for语句计算1+2+100。,#includeiostream.hvoidmain()intSum,i;Sum=0;for(i=1;i=100;i+)Sum+=i;coutSumisSumendl;,for循环的一些变化特点:(1)for循环语句的“初始表达式”和“变量增值表达式”可引入逗号运算符“,”,这样可以对若干个变量赋初值或增值。(2)for循环的三个表达式可以任意缺省,如果“条件”缺省就约定它的值是true。但不管哪个表达式缺省,其相应的分号“;”不能缺省。(3)可以在for循环内部声明循环控制变量。,3种循环语句的执行流程图,3.3.4循环的嵌套,一个循环的循环体内包含另外一个循环语句,这样的编程方式称之为“循环的嵌套”。循环嵌套时,外层循环执行一次,内层循环从头到尾执行一遍。【例3-11】如图3-7所示,打印九九乘法表。,#includeiostream.hvoidmain()intk,i;for(k=1;k=9;k+)for(i=1;i=9;i+)coutk*it;coutx;y=myabsolute(x);/函数调用cout=0)z=x;elsez=-x;returnz;,3.函数的嵌套调用,图3-9嵌套调用示意图,4.函数的递归调用另外一种比较复杂的调用是递归调用,即被调用的函数再次调用它自身。调用它自身有两种方式,一种是直接,另一种是间接调用,就是一个函数调用别的函数,而在别的函数中,又调用这个函数。,【例3-19】计算n的阶乘n!。,如图3-10所示,以计算4!为例来说明递归函数的执行过程。第一次调用函数:fact(4)24最终得到结果24第二次调用函数:fact(3)*46*4计算fact(4)的值带结果6返回第三次调用函数:fact(2)*32*3计算fact(3)的值带结果2返回第四次调用函数:fact(1)*21*2计算fact(2)的值带结果1返回1图3-10递归函数fact(n)的执行过程,3.5.3函数参数的传递,1按值传递所谓按值传递,是指当一个函数被调用时,C+根据实参和形参的对应关系将实际参数值一一传递给形参,供函数执行时使用。函数本身不对实参进行操作,也就是说,即使形参的值在函数中发生了变化,实参的值也不会受影响。这样的参数也称为传值参数。,【例3-20】参数的传值调用。,#includeiostream.hvoidfun(floata,floatb);/函数声明voidfun(floata,floatb)/函数定义floatsum;sum=a+b;coutsumendl;voidmain()floatx=5.0,y=8.5;fun(x,y);/函数的传值调用输出结果:13.500000,2地址传递使用传址调用方式时,调用函数的实参使用地址值,被调用函数的形参使用指针值。调用时系统将实参的地址值赋给对应的形参指针,使形参指针指向实参变量。所以,传址调用时,在被调用函数中可以通过改变形参指针所指向的实参变量值来间接改变,3.引用传递引用是变量或对象的别名。引用的定义格式是:main()intz;voidfunc(),全局变量z的作用范围,全局变量x,y的作用范围,3.7函数的重载,3.7.1参数类型重载的函数参数类型重载的函数是指参数个数相同,但在函数的对应参数中,至少有一个类型不同。3.7.2参数个数重载的函数参数个数重载的函数是指函数的参数个数不同,对函数进行重载。,【例3-27】圆面积、三角形面积和梯形的面积,根据参数个数的不同调用不同的MyArea()函数。,#includefloatMyArea(floatr)return(r*r*3.14f);floatMyArea(floata,floath)return(a*h*0.5f);floatMyArea(floata,floatb,floath)return(a+b)*h*0.5f);voidmain()floatr=1.5f;floata=2.0f,b=2.5f,h=1.2f;cout圆面积=MyArea(r)endl;cout梯形面积=MyArea(a,b,h)endl;cout三角形面积=MyArea(a,h)endl;,3.8函数的默认参数,3.8.1默认参数函数的使用在C+语言中,允许在函数声明或定义时给一个或多个形式参数缺省值(简称默认参数)。这样。在函数调用时,如果省略了对应位置上的实参,则执行被调函数时以该形式参数的默认值进行运算。,【例3-28】函数默认参数的用法。,#includeiostream.hintadd(intx,inty=10);/带默认参数的函数说明voidmain()intb=6;intx,y;x=add(20);/省略了第2个实参,取默认值10y=add(20,b);/提供实参,调用时按实际参数调用coutadd(20)=x,add(20,b)yendl;intadd(intx,inty)returnx+y;程序执行结果如下:add(20)=30,add(20,b)=26,3.8.2使用时的注意问题,1.默认参数的声明默认参数既可以在函数原型中声明,也可以在函数定义中声明,但无论如何都应在使用该函数之前声明,而且只能出现一次。voidMyPoint(intx=3,inty=4);/声明中出现默认参数voidMyPoint(intx,inty)cout“x=”x“,y=”yendl;,2.默认参数的顺序规定当函数含有多个参数时,缺省参数必须成组连续地放在后面。例如,下面的写法是正确的:intfun(inta,intb,intc,intd=400);intfun(inta,intb,intc=300,intd=400);intfun(inta,intb=200,intc=300,intd=400);intfun(inta=1,intb=200,intc=300,intd=400);,而下面的写法是错误的:intfun(inta=1,intb=200,intc,intd=400);intfun(inta=1,intb,intc,intd=400);,对于函数原型intfun(inta,intb=200,intc=300,intd=400);可以用下面的方式调用:fun(1000);/等价于fun(1000,200,300,400);fun(1000,2000);/等价于fun(1000,2000,300,400);fun(1000,2000,3000);/等价于fun(1000,2000,3000,400);fun(1000,2000,3000,4000);,下面的调用则是错误的:fun();fun(1000,2000,4000);,3.9系统函数的调用,VC+系统提供了很多常用函数,为程序员的使用带来了很大方便。由于系统函数都是预先定义好的,因此在使用之前应该先声明函数原型。由于系统已经分类将各个函数的声明放在各个头文件中,因此只要将适当的头文件包含进来即可。比如已经用到的包含头文件:#includeiostream.h#includestdio.h#includemath.h#includestring.h,3.10编译预处理,3.10.1宏定义命令1.不带参数的宏定义不带参数的宏定义是指用一个指定的标识符(宏名)来代表一个常量(宏体)。其一般格式为:,#define,3.10编译预处理,2.带参数的宏定义不带参数的宏替换是一种简单的字符串常量替换,为了使宏替换更具灵活性,C中提供了带参数的宏定义,其一般形式为:,#define宏名(参数表)宏体,3.10.2条件编译命令,1第一种形式#if表达式1程序段1#elif表达式2程序段2#elif表达式3程序段3#else程序段n#endif,3.10.2条件编译命令,2第二种形式#ifdef宏名程序段1#else程序段2#endif,3.10.2条件编译命令,3第三种形式#ifndef宏名程序段1#else程序段2#endif,3.10.3文件包含命令,文件包含是指一个源文件可以将另一个源文件包括进来,实际上已在前面章节多次出现,如#include。文件包含的一般形式如下:或写成,#include“文件名”,#include,课堂实训,1.某市不同车牌的出租车3公里的起步价和计费分别为:夏利7元,3公里以外,2.1元/公里;富康8元,3公里以外,2.4元/公里;桑塔那9元,3公里以外,2.7元/公里。编程:从键盘输入乘车的车型及行车公里数,输出应付车资。2.打印出所有的“水仙花数”、所谓“水仙花数。是指一个3位数,其各位数字立方和等于该数本身。例如,153是一水仙花数,因为153=13+53+33。3.用函数调用的方法,求f(k,n)=1k+2k+nk,其中k,n用键盘输入。4编一函数判别某一数是否为素数,若是,返回值为1,否则,返回值为0。然后调用该函数,分别用for、while、dowhile循环语句求出1100之间的质数。5.设计一个重载函数,求n个数的最大值(n=2,3)。并编程调用验证。,习题三,1.C+语言有哪几种基本的语句结构?2.求分段函数y=f(x)的值,f(x)的表达式如下:3写一条for语句,计数条件为n从100200,步长为2,然后再用while语句实现同样的循环。4.计算正整数1n中的奇数之和及偶数之和。5.从5100之间找出能被5或7整除的数。6.编写一段程序,运行时向用户提问“你考了多少分?(0100)”,接受输入后判断其等级并显示出来。判断依据如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学语文写作基础教学教案:如何写生动有趣的记叙文
- 成长故事与反思作文(14篇)
- 冷与热作文900字(7篇)
- 英语介词短语搭配详解:七年级英语教案
- 畅游响石山400字10篇范文
- 上海闵行区高一(下)期末英语试题及答案
- 2025年上海通河中学高一(下)英语期中考试题及答案
- 2021学年上海二中高一(下)期中数学试题及答案
- 7.2-指尖陀螺智能制造柔性产线数字孪生开发
- 应急局安全重工作汇报
- 《聪明人和傻子和奴才》 课件
- 抗震支架设计流程
- 中国丝绸简述ppt课件
- 苏轼《浣溪沙》优秀课件
- 塑料包装袋购销合同
- 年产40万吨甲醇合成工艺设计
- DDS307电导率以说明书
- S7、S9、S11系列变压器损耗表
- 满语语法入门拉丁版
- 钢琴键盘大谱表对照表-直接打印版(共6页)
- 化工企业安全生产诊断检查表
评论
0/150
提交评论