1、1,第3章 C+控制语句,3.1 C+语句概述 3.2 选择结构 3.3 循环结构,2,3.1 C+语句概述,1. 控制语句控制语句主要完成分支结构程序和循环结构程序的控制。 C+主要包括以下9个控制语句:ifelse语句 分支语句switch语句 多分支语句for语句 循环语句while语句 循环语句dowhile语句 循环语句continue语句 结束本次循环语句break语句 结束循环或结束switch语句goto语句 转向语句return语句 从函数返回语句,第3章 C+控制语句,3,3.1 C+语句概述,2. 函数调用语句C+有大量的系统函数,程序员也可以自己定义函数,对这些函数的调
2、用可以作为一条语句。 3. 表达式语句由一个表达式构成一个语句,即在表达式后添加一个分号,如赋值表达式语句等。 4. 空语句空语句只有一个分号。即:;因此空语句什么也不做。除了上面的简单语句外,可以将一组简单语句用大括号括起来,称之为复合语句。,第3章 C+控制语句,4,3.2 选择结构,选择结构也称分支结构,就是在程序运行过程中,根据具体条件执行不同的程序段。 3.2.1 if语句1. if语句的基本结构:if(表达式) 语句组1;else语句组2;,注意:表达式必须用“( )”括起来若语句组中只有一条简单的语句,则大括号“”可以省略。,第3章 C+控制语句,5,3.2 选择结构,3.2.1
3、 if语句(续一)2. if语句的嵌套:在 if 语句的“语句组1”或“语句组2”中又包含有 if 语句的情况。 if ( )if ( ) 语句 1else 语句 2 elseif ( ) 语句 3else 语句 4 if语句嵌套时,else子句总是与在它前面、距它最近、且尚未匹配的if配对。为明确匹配关系,避免匹配错误,建议将内嵌的if语句一律用“ ”括起来。,第3章 C+控制语句,6,3.2 选择结构,3.2.1 if语句(续二)3. 用if语句实现多分支: if(表达式1) 语句组1; else if(表达式2) 语句组2; else if(表达式n) 语句组n; else 语句组n+1
4、; ,第3章 C+控制语句,7,例3.4 从键盘上输入一个成绩,如果大于等于90,输出“优”,如果大于等于80,小于90,输出“良”,如果大于等于70,小于80,输出“中”,如果大于等于60,小于70,输出“及格”,如果小于60,输出“不及格”。,#include void main() int s;cout s;if (s = 90) cout = 80) ,第3章 C+控制语句,else if( (s = 70) ,8,3.2 选择结构,3.2.2 switch语句1. switch语句的一般结构:switch(表达式) case 常量1:语句组1; break;case 常量2:语句组2
5、; break;case 常量n:语句组n; break; default:语句组n+1; break;,第3章 C+控制语句,注意:表达式只能是整型、字符型或枚举型,9,3.2 选择结构,3.2.2 switch语句(续)switch语句流程图:,第3章 C+控制语句,10,例3.5 用switch语句实现例3.4的功能,#include void main() int i;float s;cout s;i = (int)(s/10);switch (i) case 9:case 10: cout “优“ endl;break;case 8: cout “良“ endl;break;case
6、 7: cout “中“ endl;break;case 6: cout “及格“ endl;break;default: cout “不及格“ endl;break; ,第3章 C+控制语句,11,3.2 选择结构,3.2.3 程序举例(续二)例3.8 编一个程序计算指定年月有几天,年月由键盘输入。 分析:每年的1,3,5,7,8,10,12月份有31天,4,6,9,11月份有30天,如果不是闰年,2月份有28天,闰年的2月有29天。判断闰年的条件是:能被4整除但不能被100整除,或者能被400整除。,第3章 C+控制语句,12,例3.8 源程序,#include void main() i
7、nt year,month,days;cout year month;switch(month)case 1: case 3: case 5: case 7: case 8: case 10: case 12: days = 31;break;case 4: case 6: case 9: case 11:days = 30;break;,第3章 C+控制语句,13,例3.8 源程序(续),case 2:if( ( (year%4 = 0) ,第3章 C+控制语句,14,3.3 循环结构,当同一段程序要执行多次时,就要用到循环结构。 3.3.1 while语句while语句的一般格式:whil
8、e(循环条件) 循环体语句组;,第3章 C+控制语句,15,3.3 循环结构,3.3.2 do-while语句do-while语句的一般格式:do 循环体语句组; while(循环条件);,第3章 C+控制语句,16,3.3 循环结构,3.3.3 for语句for语句的一般格式:for (表达式1; 表达式2; 表达式3)循环体语句组; 表达式1通常用于为循环变量赋初值;表达式2通常为循环条件;表达式3通常为循环变量增值或减值,以使循环趋于结束。三个表达式都可以省略,但分号不能省。如果表达式2省略,则循环条件总为真。,第3章 C+控制语句,17,3.3 循环结构,3.3.4 continue、
9、break与goto语句1. continue语句:当程序运行到continue语句时,循环体余下的语句不再执行,立即试图进入下次循环。 对于for循环,遇到continue语句时,跳过循环体其余语句,转向循环语句中的表达式3的计算;对于while和do-while循环,跳过循环体其余语句,转向循环条件表达式的计算。2. break语句:当程序运行到break语句时,立即结束循环。转向循环语句下面的语句继续执行。3. goto语句:无条件转向语句。goto语句易使程序流程混乱。一般形式: goto 语句标号;,第3章 C+控制语句,18,例3.12 求1100不能被3整除的整数之和,#incl
10、ude void main() int i;int sum=0; for(i=1; i=100; i+)if(i%3=0)continue;sum += i;cout “sum= “ sum endl; ,第3章 C+控制语句,如果i能被3整除,则执行continue语句,立即结束本次循环,执行i+语句,接下来判断i=100是否满足; 如果i不能被3整除,则不执行continue语句,将i加到变量sum中,19,例3.13 判断某个整数是否为素数,#include void main() int i,n;cout n; for(i=2; i=n-1; i+)if(n%i=0)break;if(i=n)cout n “ 是素数!“ endl;elsecout n “ 不是素数!“ endl; ,第3章 C+控制语句,如果n能被某个i整除(n不是素数),则会执行break语句立即结束循环,此时的i小于n,