程序的控制结构——选择结构,,概述,C++在默认的情况下采取顺序结构,除非特别指明,计算机总是按语句顺序一条一条地执行但在现实世界中,在解决问题的过程中,不可避免地遇到需要进行选择、或需要循环工作的情况这时,程序执行的顺序需要发生变化,而非从前向后逐一执行因此,程序中除了顺序结构以外,通常还有选择结构、循环结构以及转移机制从结构化程序设计的观点看,所有程序都可用3种控制结构即顺序结构、选择结构、和循环结构实现概述,选择类语句包括if语句和switch语句,用它们来解决实际应用中按不同的情况进行不同处理的问题如根据学生的成绩,对学生做出不同的等第评价循环类语句包括for循环语句、while循环语句和do循环语句三种,用它们来解决实际应用中需要重复处理的问题如当统计全班同学总分时,就需要重复地做加法,依次把每个人的分数累加起来if选择结构,,if选择结构(单分支结构),格式1:功能:如果条件表达式的值为真,即条件成立,“语句1”将被执行否则,“语句1”将被忽略(不被执行),程序将按顺序从整个if选择结构之后的下一条语句继续执行说明:格式中的“条件表达式”必须用圆括号括起来if (条件表达式) 语句1;,条件表达式,if选择结构(单分支结构)——例3.1,读入一个整数a,如果a为偶数在屏幕上输出yes,#includeusing namespace std;int main( ){ int a; cin>>a; if (a%2==0) //关系运算符==不要写成赋值号= cout<<"yes"; return 0;},if选择结构(单分支结构)——例3.2,读入一个数,若这个数大于1并且小于100,则输出yes,#includeusing namespace std;int main ( ){ int a; cin>>a; if ((a>1)}//此程序中的条件表达式为(a>1)&&(a<100),根据要求 “条件表达式”必须用圆括号括起来,否则编译会出错。
if选择结构(单分支结构),格式2:功能:若条件成立时,要执行的操作由多个句子构成,我们必须把这些句子括在一对花括号{ }内,我们称这种形式为语句块或复合语句if (条件表达式) { 语句1; 语句2; …… },if选择结构(单分支结构)——例3.3,读入a,b,若a>b则交换a,b的值,#includeusing namespace std;int main ( ){ float a,b,c; cin>>a>>b; if (a>b) { c=a; a=b; b=c; } cout<<"a="<> t; if ((t>=25) },if选择结构(双分支结构),格式2:,若分支语句由多个句子构成,我们必须把这些句子括在一对花括号{ }内if (条件表达式) { 语句A1; 语句A2; …… } else { 语句B1; 语句B2; …… },if选择结构(双分支结构)——例3.6,乘坐飞机时,乘客行李小于等于20公斤时,按每公斤1.68元收费,大于20公斤时,按每公斤1.98元收费,编程计算收费(保留2位小数)include using namespace std;int main( ){ float w, p; scanf("%f",},if语句的嵌套,if语句允许嵌套,即if分支语句还可以是if语句格式:,if(条件表达式) if(条件表达式) 语句1; else 语句2; else if(条件表达式) 语句3; else 语句4;,if语句的嵌套——例3.7,当if语句嵌套时,约定else总是和最近的一个if语句配对。
if (a>b) if (b>c) y=a; else y=c;,if (a>b){ if (b>c) y=a;}else y=c;,else部分否定的是条件b>c,即它与第二个if语句配对,else部分否定的是条件a>b,即它与第一个if语句配对,if语句的嵌套——例题,读入三条线段的长度(均为正数),判断这三条线段是否能构成三角形,若能构成三角形,判断所构成三角形的形状(等边、等腰、一般)问题分析】if三边能构成三角形if其中有一对边相等if三边相等,显示“等边三角形”else(没有三边相等),显示“等腰三角形”else(没有一边相等)显示“一般三角形”else(不构成三角形)显示“无法构成三角形”,if语句的嵌套——例题,#includeusing namespace std;int main(){ float a,b,c; scanf("%f%f%f“, },三目运算符,C++中有一个常用来代替if-else语句的操作符,这个操作符被称为三目运算符(?:),它是C++中唯一一个需要3个操作输的操作符格式为:说明:先求表达式1的值, 如果为true, 则执行表达式2,并返回表达式2的结果;如果表达式1的值为false, 则执行表达式3 ,并返回表达式3的结果。
如:,x=5>3?10:12; //5>3为true,所以x=10x=3==9?25:18; //3==9为false,所以x=18,?:,三目运算符——例3.8,使用三目运算符来确定两值中较大的一个,#includeusing namespace std;int main(){ int a,b; cin>>a>>b; int c=a>b?a:b; cout<
switch语句,,switch语句,应用条件语句可以很方便地使程序实现分支,但是出现分支比较多的时候,虽然可以用嵌套的if语句来解决,但是程序结构会显得复杂,其至凌乱为方便实现多情况选择,C++提供了一种switch开关语句switch语句(多分支结构),格式:,switch(表达式) { case 常量表达式1: 语句序列1; case 常量表达式2: 语句序列2; …… case 常量表达式n: 语句序列n; default: 语句序列n+1; },switch语句(多分支结构),,#includeusing namespace std;int main(){ int a; cin>>a; switch (a) { case 1: cout<<1; case 2: cout<<2; case 3: cout<<3; default: cout<<4; }},输入:1输出:1234,输入:2输出:234,输入:3输出:34,输入:4输出:4,输入:5输出:4,switch语句(多分支结构),在实际使用switch语句时,通常要求当执行完某个case后的一组语句序列后,就结束整个语句的执行,而不让它继续执行下一个case语句后面的语句序列。
为此,可通过使用break语句来实现该语句只有保留字break,而没有其它任何成分它是一条跳转语句,在switch中执行到它时,将结束switch语句,系统接着向下执行其它语句switch语句(多分支结构),格式:,switch(表达式) { case 常量表达式1: 语句序列1; break; case 常量表达式2: 语句序列2; break; …… case 常量表达式n: 语句序列n; break; default: 语句序列n+1; },switch语句(多分支结构),,#includeusing namespace std;int main(){ int a; cin>>a; switch (a) { case 1: cout<<1; break; case 2: cout<<2; break; case 3: cout<<3; break; default: cout<<4; }},输入:1输出:1,输入:2输出:2,输入:3输出:3,输入:4输出:4,输入:5输出:4,switch语句(多分支结构),switch中的表达式的和case中的常量表达式的数值类型必须是有序数值类型,如字符、整数case中常量表达式的数值类型必须与switch表达式类型相同,,#includeusing namespace std;int main(){ float a; cin>>a; switch (a) { case 1: cout<<‘a’; case 2: cout<<‘b’; default: cout<<‘c’; }},a的值为实数,编译错误,switch语句(多分支结构),所有的case中的常量表达式的值不能重复出现,,#includeusing namespace std;int main(){ intt a; cin>>a; switch (a) { case 1: cout<<‘a’; case 1: cout<<‘b’; default: cout<<‘c’; }},在两个case中出现2次1的值,编译错误,switch语句(多分支结构),每个case或default后,可以包含多条语句,不需要使用“{”和“}”括起来。
每个case后面的语句可以写在冒号后的同一行或换到新行写。