第3章 流程控制语句

更新时间:2024-06-16 06:55:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第3章 流程控制语句

主讲内容

3.1.1 语句的分类 3.1.1 语句的分类

?3、空语句

?只由一个分号构成的语句称为空语句。

?4、复合语句

?由一对“{}”括起来的一组语句构成一个复合语句。复合语句描述一个块,在语法

上起一个语句的作用。

?5 、流程控制语句

?流程控制语句用来控制或改变程序的执行方向的语句。

3.1.2 结构化程序控制结构

?在程序的所有流程控制方式中,有三种是最基本的,因此程序结构也就有三种基

本的程序结构:

?1、顺序结构:按语句的先后顺序执行。

?2、条件分支结构:由特定的条件决定执行哪个语句的程序结构。 ?3、循环结构:由特定的条件决定某个语句重复执行次数的控制方式。

3.2.1 if语句

?if

语句称为分支语句或条件语句,其功能是根据给定的条件,选择程序的执行方向。if语句的基本格式为: if (表达式) 语句1; else 语句2;

?该语句的执行流程是,先计算表达式的值,若表达式的值为真(或非

0),则执行

语句1,否则(表达式的值为假,或为0),执行语句2

3.2.1 if语句

?【例3.1】 输入一个年份,判断是否为闰年。

?分析:假定年份为year, 闰年的条件是:year%4==0&&year0!=0||year@0==0。 ?#include ?using namespace std; ?void main( ){ ? int year;

? cout<<\输入年份:\? cin>>year;

? if (year%4==0&&year0!=0||year@0==0) cout<

? else cout<< year<<\不是闰年\?}

?运行结果: ?输入年份:

?1900 ?1900

不是闰年 3.2.1 if语句

?if语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。嵌套if语句则可以实现多选一的情况。嵌套有两种形式,一种是嵌套在else分支中,格式为: ?if (表达式1) 语句1; else if (表达式2) 语句2; else if ? else语句n;

?第二种是嵌套在if分支中,格式为: ?if (表达式1) if (表达式2) 语句1; else 语句2 ; 3.2.1 if语句

?【例3.2】从键盘上输入三个整数,输出其中的最大数。 ?方法1:采用第二种嵌套形式 ?#include ?using namespace std; ?void main(){

? int a, b, c, max;

? cout<<\输入三个整数:\? cin>>a>>b>>c;

? cout<<\? if(a>b) if(a>c) max=a; //a>b且a>c ? else max=c; //a>b且ac) max=b; //b>=a且b>c ? else max=c; //b>=a且b

?运行结果: ?输入三个整数: ?3 7 12 ?a=3 b=7 c=12 ?最大数为:12 3.2.1 if语句

?方法2:采用第一种嵌套形式 ?#include ?using namespace std; ?void main(){

? int a,b,c,max;

? cout<<\输入三个整数:\? cin>>a>>b>>c;

? ? ? ? ? ?}

cout<<\if(a>b&&a>c) max=a;

else if(b>a&&b>c) max=b; else max=c;

cout<<\最大数为:max=\

?运行结果: ?输入三个整数: ?8 1 5 ?a=8

b=1 c=5

?最大数为:8

3.2.2 switch 语句

?C++中提供了一个switch语句,称为开关语句,也可以用来实现多选一。它根据给定条件从多个分支语句序列中选择一个语句序列作为入口开始执行。格式为: ?switch (表达式) {

case常量表达式1: <语句序列1;> case常量表达式2: <语句序列2;> ?

case常量表达式n: <语句序列n;> }

3.2.2 switch 语句

?关于switch语句,有几点需要注意:

?(1)各个case(包括default)分支出现的次序可以任意,通常将default放在

最后。

?(2)break语句可选,如果没有break语句,每一个case分支都只作为开关语句

的执行入口,执行完该分支后,还将接着执行其后的所有分支。

?(3)每个常量表达式的取值必须各不相同,否则将引起歧义。 ?(4)允许多个常量表达式对应同一个语句序列

3.2.2 switch 语句

?【例3.6】 运输公司对所运货物实行分段计费。设运输里程为s,则运费打折情况如下:

?s<250 不打折扣 ?250<=s<500 2%折扣 ?500<=s<1000 5%折扣 ?1000<=s<2000 8%折扣 ?2000<=s<3000 10%折扣 ?3000<=s 15%折扣

?设每公里每吨的基本运费为p,货物重量为w,折扣为d,则总运费f为: ?f=p*w*s*(1-d)

?设计程序,当输入p、w和s后,计算运费f。

?分析:如果用switch语句,必须使表达式符合语法要求。分析发现,里程s的分段点均是250的倍数,因此,将里程s除以250,取整数商,便得到若干整数值。 3.2.2 switch 语句

?程序:#include ?#include ?using namespace std; ?void main(){ ? int c,s;

? float p,w,d,f;

? cout<<\输入运输单价p,重量w和里程s:\? cin>>p>>w>>s; ? c=s/250; ? switch(c){

? case 0: d=0; break; ? case 1: d=0.02; break; ? case 2: case 3: d=0.05; break; ? case 4: case 5: case 6: case 7: d=0.08; break; ? case 8: case 9: case 10: case 11: d=0.1; 3.2.2 switch 语句 ?break;

?default: d=0.15; ? }

? f=p*w*s*(1-d);

? cout<<\运输单价:\重量:\里程:\? cout<<\折扣:\? cout<<\运费:\?}

?运行结果:

?输入运输单价p,重量w和里程s: ?50 150 460

?运输单价:50 重量:150 里程:460 ?折扣:0.02

?运费:3.381e+006

3.3.1 for 循环

?for语句也称for循环,语句格式为:

for (表达式1;表达式2;表达式3) 循环体语句

?该语句的执行过程是,先求表达式1的值,再求表达式2的值,如果表达式2的值

为真(或非0),则执行循环体语句,并求表达式3的值,然后再计算表达式2的值,并重复以上过程,直到表达式2的值为假(或为0),结束该循环语句。

3.3.1 for 循环

?下图是for语句的执行流程。

3.3.1 for 循环

?关于for语句,有以下几点说明:

?(1)从执行流程看,for语句属于先判断型,因此与while语句是完全等同的。 ?(2)for语句中的三个表达式都是包含逗号表达式在内的任意表达式。从逻辑关

系看,循环初始条件可在表达式1中给出,循环条件的判断可包含在表达式2中,而循环条件变量的修改可包含在表达式3中,也可以放在循环体中。

?(3)for语句中的三个表达式可部分或全部省略,但两个分号不能省略。

3.3.1 for 循环

?【例3.8】 这是一个古罗马数学家伦纳德?斐波那契提出的有趣的问题。假定每对兔子每月生出一对小兔子,新生的一对小兔子三个月后又可以生小兔子,假定所有兔子都不会死,一年后会有多少对兔子。具体说,第一个月只有一对兔子,第二个月由于新生小兔子不能生育,仍然只有一对兔子,第三个月小兔子开始生育,因此当月有两对小兔子,此后每个月的兔子数都是上个月和当月新生兔子数之和。由此可抽象出一个数列:0,1,1,2,3,5,8,??。这个数列称为Fibonacii数列,可用函数描述如下:

3.3.1 for 循环 3.3.1 for 循环 ?#include ?#include ?using namespace std; ?const int m=20; ?void main(){

? int fib0=0,fib1=1,fib2;

? cout<

? cout<

? if(n%5==0) cout<

3.3.1 for 循环

?运行结果:

?0 1 1 2 3 ?5 8 13 21 34 ?55 89 144 233 377

本文来源:https://www.bwwdw.com/article/0oz3.html

Top