C++提供三种选择结构,即if选择结构、if-else选择结构和switch选择结构。 一、if语句(单分支结构) 格式1: if (条件表达式) 语句1; 功能:如果条件表达式的值为真,即条件成立,语句1将被执行。否则,语句1将被忽略(不被执行),程序将按顺序从整个选择结构之后的下一条语句继续执行。执行流程如图3-1所示
说明:格式中的“条件表达式”必须用圆括号括起来。 程序设计风格提示:从语法上来讲,整个if语句可以写在一行。如果条件表达式和语句都非常简单,那么整个语句可以写在一行;否则,最好在条件表达式后换行,而且语句部分要相对if缩进两格。 例3.1 读入一个整数a,如果a为偶数在屏幕上输出yes #include using namespace std; int main( ) { int a; cin>>a; if(a%2==0) cout<> return 0; } 注意:关系运算符==用来表达该符号的左右两边是否相等,不要写成赋值号=。 试一试 例3.2 读入一个数,若这个数大于1并且小于100,则输出yes # include using namespace std; int main ( ) { int a; cin>>a; if((a>1)&&(a<>) cout<> return 0; } 注意:此程序中的条件表达式为(a>1)&&(a<>,根据要 求 “条件表达式”必须用圆括号括起来,否则编译会出错。 格式2: if (条件表达式) { 语句1; 语句2; …… } 若条件成立时,要执行的操作由多个句子构成,我们必须把这些句子括在一对花括号{ }内,我们称这种形式为语句块或复合语句。 程序设计风格提示:书写语句块(也称为复合语句)时,左右花括号要对齐,组成语句块的各语句要相对花括号缩进一层并对齐。 例3.3 读入a,b,若a>b则交换a,b的值 #include using namespace std; int main ( ) { float a,b,c; cin>>a>>b; if(a>b) { c=a; a=b; b=c; } cout<><><' b='< return 0; } 二、if-else语句(双分支结构) if单分支选择结构只在条件为true时采取操作,条件为false时则忽略这个操作。利用if-else双分支选择结构则可以在条件为true时和条件为false时采取不同操作。 格式1: 功能:如果(条件表达式)的值为“真” ,即条件成立,则执行语句1,执行完“语句1”后继续执行整个if-else语句的后继语句;如果(条件表达式)的值为“假” ,即条件不成立,那么跳过语句1选择执行“语句2” ,执行完语句2后继续执行整个if-else语句的后继语句;也就是说if-else语句总是根据(条件表达式)的结果,选择“语句1”和“语句2”中的一个执行,执行完以后,整个if-else就算执行完了。执行流程如图4-2所示 if (条件表达式) 语句1; else 语句2; 程序设计风格提示:书写if-else语句时,if和else要对齐,而分支的语句部分要缩进两格。 例3.4 根据用户输入的成绩,判断是否通过了考试。 #include using namespace std; int main() { int c; cin >> c; if (c>=60) cout<'pass!>'pass!> else cout<> return 0; } 例3.5 输入温度t的值,判断是否适合晨练。(25<><>,则适合晨练ok,否则不适合no) #include using namespace std; int main() { int t; cin >> t; if ((t>=25) &&(t<> cout<> else cout<> return 0; } 格式2: if (条件表达式) { 语句1; 语句2; …… } else { 语句1; 语句2; …… } 若分支语句由多个句子构成,我们必须把这些句子括在一对花括号{ }内。 例3.6 乘坐飞机时,当乘客行李小于等于20公斤时,按每公斤1.68元收费,大于20公斤时,按每公斤1.98元收费,编程计算收费(保留2位小数)。 #include using namespace std; int main( ) { float w, p; scanf('%f',&w); if (w<> printf('%.2f',w*1.68); else printf('%.2f',w*1.98); return 0; } if语句允许嵌套,即语句1和语句2还可以是if语句,当if语句嵌套时,约定else总是和最近的一个if语句配对。 例3.7 if (a>b) if (b>c) y=a; elsey=c; else部分否定的是条件b>c,即它与第二个if语句配对;若想让else部分与第一个if语句配对,则要引入一个复合语句,将上述语句写成如下形式: if (a>b) { if (b>c) y=a; } else y=c; 【上机练习3.1】 1、判断两个数a,b,输出较大数的平方值。 2、从键盘读入一个数,判断它的正负。是正数,则输出“+”,是负数,则输出“-”。 3、假设邮局规定寄邮件时若每件重量在1公斤以内(含1公斤),按1.5元计算邮费,如果超过1公斤时,其超出部分每公斤加收0.8元。请编程序计算邮件收费。 4、某服装公司为了推销产品,采取这样的批发销售方案:凡订购超过100 套的,每套定价为50元,否则每套价格为80元。输入订购套数,输出应付款的金额数。 5、某市的士费起步价8元,可以行驶3公里。3公里以后,按每公里1.6元计算,输入的士的公里数,请你计算顾客需付费多少元? 6、输入三个正整数,若能用这三个数作为边长组成三角形,就计算并输出该三角形的面积,否则输出Can't。(组成三角形的条件为:任意两边之和大于第三边) |
|