《预处理与语句》PPT课件.ppt_第1页
《预处理与语句》PPT课件.ppt_第2页
《预处理与语句》PPT课件.ppt_第3页
《预处理与语句》PPT课件.ppt_第4页
《预处理与语句》PPT课件.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、1,3.4 分支结构及语句实现,3.4.1单分支结构及其语句实现,【格式】if() ,【说明】 可以是关系表达式、逻辑表达式和其他表达式,常用的是关系表达式和逻辑表达式;语句1可以是一条语句,也可以是复合语句。,2,单分支结构及其语句实现,【功能】首先计算的值,如果的值为真(非0即为真),执行,否则(的值为0)执行if语句的下一个语句。,3,简单if语句 示例,【例3-4-1】任意给定一个实数,输出其绝对值。,【实例3-4-2】已知某学生“高等数学”课程的成绩,如果及格了,输出“Passed!”。,4,【格式】if() else ,3.4.2 双分支结构及其语句实现,【说明】和可以是一条语句,

2、也可以是复合语句。,5,ifelse语句,【功能】先计算的值。如果的值为真,执行,否则执行。 只有一条通路,6,【例3-4-3】已知,乘客乘火车时允许随身携带的行李重量为20公斤,若超出此总量,超出的部分按每公斤0.5元收费。若某乘客随身携带的行李重量为32公斤,求所需费用。,ifelse语句示例,7,【例3-4-4 】已知三角形的三边长,求三角形的面积。,算 法,ifelse语句示例,8,【例3-4-5 】输入任意一个整数,说明该数是奇数还是偶数。,ifelse语句示例,【例3-4-6 】 已知某学生“高等数学”课程的成绩,如果及格了,输出“Passed!”,否则输出“no passed!”

3、。,9,【格式】if() else if() else if() else if() ,3.4.3 多分支结构及其语句实现,1. if语句的嵌套形式,10,【功能】先计算的值。如果的值为真,执行,否则计算的值。如果的值为真,执行,否则计算的值 只有一条通路,if语句的嵌套形式,11,【例3-4-7】已知x的值,求y的值。,if语句的嵌套形式示例,【实例3-4-8】猜数字游戏。输入任意一个整数,判断其是否为8,若猜对了,给出“right!”;若猜错了且比8大,给出“big!”,否则给出“small!”。,12,if语句的嵌套形式,所谓if语句的嵌套是指在条件语句内部(或中)又使用了条件语句。例如

4、:,if(x1) if(y1) . else .,if(x1) . else if(y1) .,13,if语句的嵌套示例,#include void main() int score, grade; cinscore; if(score=90) grade=5;cout=80) grade=4;cout=70) grade=3;cout=60) grade=2;cout=0) grade=1;coutgeade; else cout“data error!n”;,【例3-4-9】输入一个学生的成绩(百分制),转换成5分制。,14,2. 多分支选择结构和switch语句,【格式】switch()

5、 case : case : case : case : default: ,15,开关语句,16,开关语句,【说明】 (1)case后边的可以是整型常量表达式或字符型常量表达式。 (2)也称为开关常量。 (3)可以是一条简单的语句或复合语句,即使语句i是复合语句,也可以不用大括号括起来。 (4)default:语句n+1可以缺省。 当执行完后,不是马上跳出switch语句,而是接着执行、,直至。,17,开关语句示例,switch(k) case 1: coutk=kendl; case 2: coutk=kendl; default: coutk=kendl; ,当k=1时,输出3次k=1;

6、 当k=2时,输出2次k=2。 一般情况下,并不希望这样“穿过”整个switch语句,而是通过break语句控制跳出switch语句。,18,修正后的开关语句示例,switch(k) case 1: coutk=kendl; break; case 2: coutk=kendl; break; default: coutk=kendl; ,当k=1时,输出1次k=1; 当k=2时,输出1次k=2。,19,开关语句,【说明】 (1)任意两个case后的不能相同。 (2)多个case可以共用一个。例如: switch(x) case 1: case 3: case 5: y=x; ,20,开关语句

7、示例,【例3-4-10】任意给定一个月份数,输出是哪个季节(12,1,2月是冬季;3 ,4,5月是春季;6,7,8月是夏季;9,10,11月是秋季)。,#include void main() int month; coutmonth; switch(month) case 12: case 1: case 2: coutwinterendl; break; case 3: case 4: case 5:,cout“spring”endl; break; case 6: case 7: case 8: coutsummerendl; break; case 9: case 10: case 1

8、1: coutautumnendl; break; default: coutinput month error!endl; ,21,开关语句示例,22,开关语句示例,【例3-4-11】任意给定一个学生的成绩(百分制),转换成5分制后输出。,#include void main() int score,grade; coutscore; score=score10; switch(score) case 10: case 9: grade=5; break; case 8: grade=4; break;,case 7: grade=3; break; case 6: grade=2; bre

9、ak; case 5:case 4:case 3:case 2:case 1:case 0: grade=1; break; default: grade=-1; cout“grade=gradeendl; ,23,开关语句示例,【例3-4-12】阅读下列程序,给出运行结果。 #include void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; couta=a b=bendl;

10、 ,24,3.4.4 条件运算符与条件表达式,条件运算符 ?: 条件运算符是C+中唯一的三目运算符。,【条件表达式格式】 ? : ,【功能】它要求有三个操作对象。当非0时,返回的值,否则返回的值。,25,条件运算符和条件表达式,例如:x=3;y=5; xy ? x : y;,【说明】 (1)条件运算符的结合性为从右向左; (2)条件表达式可以作为左值。,26,条件运算符示例,#include int main( ) char ch; cinch; /判别ch是否大写字母,是则转换 ch=(ch=A ,【例3-4-13】输入一个字符,判别它是否为大写字母,如果是,将它转换成小写字母;如果不是,不

11、转换。然后输出最后得到的字符。,27,条件运算符示例,【例3-4-14】任意给定3个数,找出其中最大的一个数并输出。,28,3.4.5 选择结构程序设计,【例3-4-15 】编写程序,判断某一年是否为闰年。,我们居住的地球总是绕着太阳旋转的。地球绕太阳转一圈需要365天5时48分46秒,也就是365.2422天。为了方便,一年定为365天,叫做平年;这样每过四年差不多就要多出一天来,把这一天加在2月里,这一年就有366天,叫做闰年。,29,3.4.5 选择结构程序设计,通常,每四年里有三个平年一个闰年。公历年份是4的倍数的,一般都是闰年。按照每四年一个闰年计算,平均每年就要多算出0.0078天

12、,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的就是平年。 也就是我们通常所说的:四年一闰,百年不闰,四百年再闰。,30,3.4.5 选择结构程序设计,【例3-4-15】编写程序,判断某一年是否为闰年。,#include int main( ) int year; bool leap; coutyear; if (year%4=0) if(year%100=0) if (year%400=0) leap=true;,else leap=false; else leap=true; else le

13、ap=false; if (leap) coutyear is ; else coutyear is not ; cout a leap year.endl; return 0; ,31,选择结构程序设计,【例3-4-16】运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下:,s250km 没有折扣 250s500 2折扣 500s1000 5折扣 1000s2000 8折扣 2000s3000 10折扣 3000s 15折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为,折扣为d,则总运费f的计算公式为: f = p * w * s * (1 - d),32,3.5 循环

14、结构语句,C+提供了3种循环语句:while语句、dowhile语句和for语句。 循环有三要素。 初值;循环的终止条件;循环变量的改变。 初值用于设置循环的入口点,终止条件用于设置循环的出口点,循环变量的改变保证循环的结束。循环三要素在编写循环语句时非常重要。,33,循环三要素,统计圈数:i=i+1,例:绕400米跑道跑3000米,34,3.5.1 for语句,【格式】for(;) ,【说明】 (1)、和可以是任意表达式。 (2)用于设置循环变量的初值;设置循环终止的条件;完成循环变量的修改。 (3)、和均可以省略,但分号(;)不能省略。,35,for语句,【功能】 (1)对括号中的求值。

15、(2)对求值。 (3)若的值为真执行,然后计算的值。 (4)重复(2)、(3)步骤,直至的值为假退出循环。,36,for语句示例,【例3-5-1】 计算1+2+3+100的和。,算法:累加和 ss+x 注意:和s首先要清零,37,38,for语句示例,【例3-5-2】 计算10个学生的数学平均成绩。,【例3-5-3】 计算10!。,算法:累乘 tt*x 注意:乘积t首先要归1。,39,3.5.2 while语句,【格式】while() ,【说明】可以是任意表达式。但一般常用关系表达式或逻辑表达式。,40,while语句,【功能】首先计算的值,如果的值为真(非0 )执行,然后重复计算的值,如果的

16、值仍然为真,重复执行,直至的值为假退出循环,执行while语句的下一条语句。,41,while语句示例,【例3-5-4】 计算下式刚好大于等于3时的n。,用while语句计算1100之间的和。,42,3.5.3 dowhile语句,【格式】 do while();,43,dowhile语句,图4-7 dowhile语句执行过程,表达式,循环体语句,T,F,【功能】 (1)执行; (2)计算值。 (3)若的值为真(非0)重复(1)、(2)步骤,直至的值为假退出循环。,44,dowhile语句示例,【例3-5-5】编写程序,求的近似值,要求误差小于或等于10-6为止。已知/41-1/3+1/5-1

17、/7+。,#include #include void main() int i=1,t=1; float pi=0,eps=1e-6f; /eps用于设置误差,do pi+=1.0f*t/i; i+=2; t=-t;/处理正负号 while(fabs(1.0/i)eps); coutpi=4*piendl; ,45,三种循环语句的比较,while循环: 循环变量=初值 while() ; 循环变量的改变语句;,dowhile循环: 循环变量=初值 ; 循环变量的改变语句;while();,for循环: for(循环变量=初值;条件;循环变量的改变语句;) ; ,46,三种循环语句的比较示例,

18、#include void main() int i,n; long fact=1,sum=0; coutn; i=1; while(i=n) fact*=i+; sum+=fact; coutsum=sumendl; ,#include void main() int i,n; long fact=1,sum=0; coutn; i=1; do fact*=i+; sum+=fact; while(i=n); coutsum=sumendl;,#include void main() int i,n; long fact=1,sum=0; coutn; for(i=1;i=n;i+) fac

19、t*=i; sum+=fact; coutsum=sumendl; ,【例3-5-6】试分别用while、dowhile或for语句计算1!+2!+3!+10!,47,3.5.4 循环嵌套及其语句实现,1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81,【例3-5-6】按下列格式打印九九表。,48,循环嵌套及其应用,#include

20、#include void main() int i,j; coutsetiosflags(ios:left); coutsetw(5) ; for(i=1;i=9;i+) coutsetw(5)i; coutendl; for(i=1;i=9;i+) coutisetw(4) ; for(j=1;j=i;j+) coutsetw(5); couti*j; coutendl; ,49,3.6 辅助控制语句,3.6.1 break语句,【格式】 break;,【说明】 break语句只能用于switch或循环语句中。当程序执行到该语句时,将控制流程终止switch或循环语句。,50,Break语

21、句示例,【例3-6-1】任给一个正整数,判断其是否是素数。,#include #include void main() int x,j,flag; flag=1; for(j=2;j=sqrt(x);j+) if(x % j=0) flag=0; break; if(flag=1) coutx“ is a prime! ”endl; ,51,3.6.2 continue语句,【格式】 continue;,【功能】 continue语句只能用于循环语句中。当程序执行到该语句时,将控制流程终止本次循环,返回到本层循环的条件测试部分继续执行。,52,continue语句示例,【例3-6-2】阅读下列

22、程序,给出运行结果。 #include void main() int i; for(i=1;i=50;i+) if(i % 5) continue; couti ; ,结果: 5 10 15 20 25 30 35 40 45 50,53,break语句与continue语句的区别,(1)break语句是终止本层循环,continue语句是终止本次循环。 (2)break语句可以用在循环和switch语句中,continue语句只能用在循环语句中 。,54,break语句与continue语句的区别,程序段1: for(int sum=0,i=1;i=100;i+) if(i % 2=0) continue; sum+=i; coutsum=sumendl;,程序段2: for(int sum=0,i=1;i=100;i+) if(i % 2=0) break; sum+=i; coutsum=sumendl;,55,3.7 程序设计实例,【例3-7-1】输入任意3个数,按由大到小的顺序排列输出。,【例3-7-2】根据输入的运算符(+、-、*、/),进行相应的四则运算。,【例3-7-3】已知Fibonacc

温馨提示

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

评论

0/150

提交评论