第3章控制语句_第1页
第3章控制语句_第2页
第3章控制语句_第3页
第3章控制语句_第4页
第3章控制语句_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

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

文档简介

1、C+程序设计湖南大学 杜四春、银红霞第3章 控制语句 3.1 顺序控制语句 3.2 选择控制语句 3.3 循环控制语句 3.4 跳转语句 C+程序设计湖南大学 杜四春、银红霞高级语言源程序的基本组成单位是语句。在C+程序中,语句是最小的可执行单元,一条语句由一个分号结束。nC+程序的语句按其功能可以划分为两类:操作运算语句 流程控制语句n基本的控制结构有三种:顺序结构,选择结构,循环结构 C+程序设计湖南大学 杜四春、银红霞3.1 顺序控制语句顾名思义,所谓顺序结构,就是指按照语句在程序中的先后次序一条一条的顺次执行。顺序控制语句是一类简单的语句,上述的操作运算语句即是顺序控制语句,包括表达式

2、语句,输入/输出等。 C+程序设计湖南大学 杜四春、银红霞3.1.1 表达式语句表达式语句 任何一个表达式后面加上一个分号就构成了表达式语句(没有分号的不是语句)。表达式是指用运算符连接各个运算对象,合乎语法规则的式子。例如,以下都是表达式语句:a=3+5;ab?a:b;a=1,b=2,c=3;printf(“hellon”);常见的表达式语句有以下几种:空语句、赋值语句、函数调用语句。 C+程序设计湖南大学 杜四春、银红霞1. 空语句空语句空语句是指只有一个分号而没有表达式的语句。语法格式为:;空语句不做任何操作运算,而只是作为一种形式上的语句,填充在控制结构之中。这些填充处需要一条语句,但

3、又不做任何操作。空语句是最简单的表达式语句。 C+程序设计湖南大学 杜四春、银红霞2. 赋值语句赋值语句赋值语句是由赋值表达式加一个语句结束标志(分号“;”)构成的语句。语法格式为:变量 赋值运算符 表达式;例如:a=1;b+=2;c=sin(d);可以多重赋值,将一个表达式的值同时赋给多个变量。如: 变量1=变量2= =变量n=表达式;等价于: 变量1=表达式;变量2=表达式;变量n=表达式; C+程序设计湖南大学 杜四春、银红霞3. 函数调用语句函数调用语句函数调用语句是由函数调用表达式加一个语句结束标志(分号“;”)构成的语句。例如:scanf(“%d”,&e);max(a,b)

4、; C+程序设计湖南大学 杜四春、银红霞3.1.2 输入输入/ /输出(输出(I/OI/O) C+程序没有输入/输出语句,它的输入/输出功能由函数(scanf、printf)或流控制来实现。输入/输出流(I/0流)是输入或输出的一系列字节。C+定义了运算符“”的iostream类。在这里只介绍如何利用C+的标准输入/输出流实现数据的输入/输出功能。 C+程序设计湖南大学 杜四春、银红霞1. 输入输入当程序需要执行键盘输入时,可以使用抽取操作符“”从输入流cin中抽取键盘输入的字符和数字,并把它赋给指定的变量。例如:#includevoid main()int a;cina;注意:这里的抽取操作

5、符“”与位移运算符“”是同样的符号,但这种符号在不同的地方其含义是不一样的。 C+程序设计湖南大学 杜四春、银红霞2. 输出输出当程序需要在屏幕上显示输出时,可以使用插入操作符“”向输出流cout中插入字符和数字,并把它在屏幕上显示输出。例如:#includevoid main()cout”Hello.n”;与输入一样,这里的插入操作符“”与位移运算符“”是同样的符号,但这种符号在不同的地方其含义是不一样的。 C+程序设计湖南大学 杜四春、银红霞在C+程序中,cin与cout允许将任何基本数据类型的名字或值传给流。而且书写格式较灵活,可以在同一行中串连书写,也可以分写在几行,提高可读性。例如:

6、cout”hello”;cout3;coutendl;等价于:cout”hello”3endl;也等价于:cout”hello” /注意:行末无分号 3 /行末无分号 ab; /cin可分辨不同的抽取 /变量类型 C+程序设计湖南大学 杜四春、银红霞3. 常用的控制符常用的控制符用控制符(manipulators)可以对I/O流的格式进行控制。C+在头文件iomanip.h中定义了控制符对象,可以直接将这些控制符嵌入到I/O语句中进行格式控制。在使用这些控制符时,要在程序的开头包含头文件iomanip.h。表3-1列出了常用的I/O流控制符。 C+程序设计湖南大学 杜四春、银红霞控制符含义de

7、c数值数据采用十进制表示hex数值数据采用十六进制表示oct数值数据采用八进制表示setw(n)设置域宽为n个字符setprecision(n)设置浮点数的小数位数(包括小数点)setioflags(ios:uppercase)十六进制数大写输出setioflags(ios:lowercase)十六进制数小写输出setiosflags(ios:left)左对齐setiosflags(ios:right)右对齐setiosflags(ios:showpos)设置正、负符号的显示setfill(c)设置填充字符为cendl插入换行符,并刷新流 表3-1 常用的I/O流控制符 C+程序设计湖南大学

8、杜四春、银红霞(1)控制不同进制的输出(十进制、八进制、十六进制) #includevoid main()int a=1001; cout”默认下:”aendl; cout”十进制:”decaendl; cout”八进制:”octaendl; cout”十六进制:”hexaendl; 此程序的运行结果为:默认下:1001十进制:1001八进制:1751十六进制:3e9C+程序设计湖南大学 杜四春、银红霞(2)控制输出宽度 #include#includevoid main()int a=1234567890; double b=123.45; coutsetw(10)aendl; coutse

9、tw(10)bendl; coutsetw(8)bendl; coutsetw(6)bendl; coutsetw(4)bendl; 此程序的运行结果为:1234567890 123.45 123.45123.45123.45 C+程序设计湖南大学 杜四春、银红霞(3)控制输出精度#include#includevoid main()double a=1.234567;coutsetprecision(3)aendl; 如果希望显示的数字是1.23,即保留两位小数,此时可用setprecision(n)控制符加以控制,此时显示3位有效位。当小数位数截短显示时,进行四舍五入处理。 C+默认的输出

10、流数值的有效位是6。 C+程序设计湖南大学 杜四春、银红霞(4)控制左右对齐默认情况下,C+程序的I/O流以左对齐方式显示输出的内容。使用控制符setiosflags(ios:left)和setiosflags(ios:right),可以控制输出内容的左、右对齐方式。setiosflags(ios:left)和setiosflags(ios:right)控制符在头文件iomanip.h中定义。 C+程序设计湖南大学 杜四春、银红霞(5)控制正、负符号的显示 #include#includevoid main() cout10” ”-20endl; coutsetiosflags(ios:sho

11、wpos)30” ” -40endl;此程序的运行结果为:10 -20+30 -40 C+程序设计湖南大学 杜四春、银红霞(6)控制空位填充 #include#includevoid main() coutsetfill(*)setw(4)12endl;此程序的运行结果为:*12 C+程序设计湖南大学 杜四春、银红霞3.1.3 3.1.3 复合语句复合语句C+语言允许把一组语句用一对花括号括起来,构成一个复合语句。例如: int a; a=1+2;请注意:一个复合语句的右花括号“”之后不能再写分号。复合语句也称为分程序,是若干条语句的一个集合,它在语法上是一个整体,相当于一个语句。在分程序中定

12、义的变量只在此分程序中有效。 C+程序设计湖南大学 杜四春、银红霞3.2 选择控制语句选择语句又称为分支语句,它通过对给定的条件进行判断,从而决定执行两个或多个分支中的哪一支。因此,在编写选择语句之前,应该首先明确判断条件是什么,并确定当判断结果为“真”或“假”时应分别执行什么样的操作(算法)。C+程序中提供的选择语句有两种:ifelse语句和switch语句。 C+程序设计湖南大学 杜四春、银红霞3.2.1 ifelse语句语句1. if语句语句if语句的语法格式为: if (条件表达式) 或: if (条件表达式) 语句; 语句序列;它的意义为:如果条件表达式进行一次测试,且测试为真,则执

13、行后面的语句。当语句序列只包含一条语句时,包围该语句序列的花括号可以省略。 C+程序设计湖南大学 杜四春、银红霞例如:判断用户的输入,如果输入的数值大于0,则在屏幕上显示“正数”。#includevoid main() int a; cina; if(a0) cout”正数”endl;C+程序设计湖南大学 杜四春、银红霞2. 空语句空语句编译器必须在if条件表达式的后面找到一个作为语句结束符的分号“;”,以标志if语句的结束。这样,如果是下面的代码:if (条件表达式); /空语句做if中的语句语句;则不管条件表达式为真为假,总是接着执行分号后的语句。即相当于if语句不做任何事。C+程序设计湖

14、南大学 杜四春、银红霞3. ifelse语句语句ifelse语句的语法格式为:if (条件表达式)语句序列1;else 语句序列2;它的意义为:如果“条件表达式”的判断结果为真,则执行语句序列1;如果“条件表达式”的判断结果为假,则执行语句序列2。 C+程序设计湖南大学 杜四春、银红霞判断用户的输入,如果输入的数值大于0,则在屏幕上显示“正数”;否则在屏幕上显示“不是正数”。#includevoid main() int a; cina; if(a0) cout”正数”endl; else cout”不是正数”b) if(ac) max=a; else max=c;else if(bc) ma

15、x=b; else max=c; C+程序设计湖南大学 杜四春、银红霞当多个ifelse语句嵌套时,在容易误解的地方可以按照语法关系加上花括号来标识逻辑关系的正确性。如上例可以改写为:if (ab) if(ac) max=a; else max=c;else if(bc) max=b; else max=c; C+程序设计湖南大学 杜四春、银红霞3.2.2 switch语句语句switch语句是多分支的选择语句。嵌套的if语句可以处理多分支选择。但是,用switch语句更加直观。switch语句的语法格式为:switch (整数表达式) case 常量表达式1:; case 常量表达式2:;

16、case 常量表达式n:; default:; C+程序设计湖南大学 杜四春、银红霞switch语句的执行顺序是:首先对“整数表达式”进行计算,得到一个整型常量结果,然后从上到下寻找与此结果相匹配的常量表达式所在的case语句,以此作为入口,开始顺序执行入口处后面的各语句,直到遇到break语句,才结束switch语句,转而执行switch结构后的其他语句。如果没有找到与此结果相匹配的常量表达式,则从default:处开始执行语句序列n+1。C+程序设计湖南大学 杜四春、银红霞例如,根据考试成绩的等级输出百分制分数段:char grade;/.switch (grade) caseA: cou

17、t “85100n”;break; caseB: cout “7084n”;break; caseC: cout “6069n”;break; caseD: cout “60n”;break; default: cout “errorn”;break;若grade的值为A,则程序的输出结果为:85100 C+程序设计湖南大学 杜四春、银红霞几点说明:(1)default语句是可缺省的。(2)switch后面括号中的表达式只能是整型、字符型或枚举型表达式。(3)在各个分支中的break语句起着退出switch语句的作用。 (4)case语句起标号的作用。标号不能重名 。(5)可以使多个case语

18、句共用一组语句序列。 (6)各个case(包括default)语句的出现次序可以任意。(7)每个case语句中不必用 ,而整体的switch结构一定要写一对花括号 。(8)switch结构也可以嵌套。C+程序设计湖南大学 杜四春、银红霞3.3 循环控制语句C+提供了三种循环控制语句:while语句,dowhile语句,for语句。三种语句都由相似的三部分组成:进入循环的条件,循环体,退出循环的条件;完成的功能也类似。所不同的只是三者进入与退出循环的方式不同。n while语句语句:当条件满足时进入,重复执行循环体,直到条件不满足时退出。n dowhile语句语句:无条件进入,执行一次循环体后判

19、断是否满足条件,当条件满足时重复执行循环体,直到条件不满足时退出。n for语句语句:当循环变量在指定范围内变化时,重复执行循环体,直到循环变量超出了指定的范围时退出。 C+程序设计湖南大学 杜四春、银红霞3.3.1 while语句语句while语句的语法格式为:while (条件表达式) 循环体;它的含义为:首先对条件表达式进行判断,若判断结果为假(false,0),则跳过循环体,执行while结构后面的语句。若判断结果为真(true,非0),则进入循环体,执行其中的语句序列。执行完一次循环体语句后,修改循环变量,再对条件表达式进行判断,若判断结果为真,则再执行一次循环体语句,依次类推,直到

20、判断结果为假时,退出while循环语句,转而执行后面的语句。即“先判断后执行”。C+程序设计湖南大学 杜四春、银红霞while循环由4个部分组成:循环变量初始化,判断条件,循环体,改变循环变量的值。例如,计算sum=1+2+3+10的while循环结构如下:sum=0;i=1; /循环变量初始化while (i=10) /判断条件 /循环体 sum=sum+i; i+; /改变循环变量的值C+程序设计湖南大学 杜四春、银红霞注意:(1)如果循环体包含一个以上的语句,则应该用花括号括起来,以块语句形式出现。(2)仔细定义循环变量的初始值和判断条件的边界值。(3)对条件表达式的计算总是比循环体的执

21、行多一次。这是因为最后一次判断条件为假时不执行循环体。(4)当循环体不实现任何功能时,要使用空语句作为循环体,表示为:while (条件表达式) ; (5)循环体中,改变循环变量的值很重要。如果循环变量的值恒定不变,或者当条件表达式为一常数时,将会导致无限循环(也即死循环)。若要退出一个无限循环,必须在循环体内用break等语句退出。 C+程序设计湖南大学 杜四春、银红霞3.3.2 dowhile语句语句dowhile语句的语法格式为:do 循环体;while (条件表达式);它的含义为:当流程到达do后,立即执行循环体语句,然后再对条件表达式进行判断。若条件表达式的值为真(非0),则重复执行

22、循环体语句,否则退出。即“先执行后判断”方式。 dowhile语句与while语句功能相似。 C+程序设计湖南大学 杜四春、银红霞例如:计算sum=1+2+3+10的dowhile循环结构如下:sum=0;i=1; /循环变量初始化do /循环体 sum=sum+i; i+; /改变循环变量的值 while (i=10) /判断条件 与while语句不同的是:while语句有可能一次都不执行循环体,而dowhile循环至少执行一次,因为直到程序到达循环体的尾部遇到while时,才知道继续条件是什么。 C+程序设计湖南大学 杜四春、银红霞dowhile结构与while结构中都具有一个while语

23、句,很容易混淆。为明显区分它们,dowhile循环体即使是一个单语句,习惯上也使用花括号包围起来,并且while(表达式)直接写在花括号“”的后面。这样的书写格式可以与while结构清楚地区分开来。例如:do sum+=i+; while (i=100);C+程序设计湖南大学 杜四春、银红霞3.3.3 for语句语句for语句的语法格式为:for(表达式1;表达式2;表达式3) 循环体;其中,表达式1可以称为初始化表达式,一般用于对循环变量进行初始化或赋初值;表达式2可以称为条件表达式,当它的判断条件为真时,就执行循环体语句,否则终止循环,退出for结构;表达式3可以称为修正表达式,一般用于在

24、每次循环体执行之后,对循环变量进行修改操作;循环体是当表达式2为真时执行的一组语句序列。 C+程序设计湖南大学 杜四春、银红霞具体来说,for语句的执行过程如下:(1)先求解表达式1;(2)求解表达式2,若为0(假),则结束循环,并转到(5);(3)若表达式2为非0(真),则执行循环体,然后求解表达式3;(4)转回(2);(5)执行for语句下面的一个语句。 C+程序设计湖南大学 杜四春、银红霞例如,计算sum=1+2+3+10的for循环结构如下:sum=0;for (i=1;i=10;i+) /初始化,判断条 /件,修改方式,步长都在顶部描述 sum+=i; /循环体相对简洁由此例可见,f

25、or语句将循环体所用的控制都放在循环顶部统一表示,显得更直观。 C+程序设计湖南大学 杜四春、银红霞 除此之外,for语句还充分表现了其灵活性。比如,表达式3并不仅限于修正循环变量的值,还可以是任何操作。例如:for (sum=0,i=1;i=10; sum+=i ,i+); 注意,此时for语句没有循环体,也即循环体是一个空语句。 有时,表达式2被省略。即不判断循环条件,循环无终止进行下去。这时候,需要在循环体中有跳出循环的控制语句。 最简单的表示无限循环的方式如下:for( ; ;) /分号不能省略三个表达式都可省略。即不设初值,不判断条件(认为表达式2为真),循环变量不变化,无终止执行循

26、环体的语句。C+程序设计湖南大学 杜四春、银红霞3.4 跳转语句在C+中,除了提供顺序执行和选择控制、循环控制语句外,还提供了一类跳转语句。这类语句的总体功能是中断当前某段程序的执行,并跳转到程序的其他位置继续执行。常见的跳转语句有三种:break语句、continue语句与goto语句。其中,前两种语句不允许用户自己指定跳转到哪里,而是必须按照相应的原则跳转,而后一种语句可以由用户事先指定欲跳转到的位置,按照用户的需要进行跳转。 C+程序设计湖南大学 杜四春、银红霞3.4.1 break语句语句break语句的作用是:结束当前正在执行的循环(for、while、dowhile)或多路分支(s

27、witch)程序结构,转而执行这些结构后面的语句。在switch语句中,break用来使流程跳出switch语句,继续执行switch后的语句。在循环语句中,break用来从最近的封闭循环体内跳出。 例如,下面的代码在执行了break之后,继续执行“a+=1;”处的语句,而不是跳出所有的循环: C+程序设计湖南大学 杜四春、银红霞for ( ; ; ) for ( ; ; ) if (i=1) break; a+=1; /break跳至此处 /C+程序设计湖南大学 杜四春、银红霞3.4.2 continue语句语句continue语句的作用是:结束当前正在执行的这一次循环(for、while、

28、dowhile),接着执行下一次循环。即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。在for循环中,continue用来转去执行表达式2。在while循环和dowhile循环中,continue用来转去执行对条件表达式的判断。 continue语句和break语句的区别是:continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束本次循环,不再进行条件判断。C+程序设计湖南大学 杜四春、银红霞例如: 输出1100之间的不能被7整除的数。for (int i=1; i=100; i+) if (i%7=0) continue; cout i endl;当i被7整除时,执行continue语句,

温馨提示

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

评论

0/150

提交评论