第4章 选择结构程序设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第4章选择结构程序设计

4.1 if语句

【学习目标】

(1)掌握if语句的语句格式与应用

(2)掌握复合if语句的语句格式与应用

(3)掌握条件运算符的用法

实例13 if语句——根据条件确定公司是否已经为司机投保

【实例任务】

如果司机满足下列条件之一,公司则为他们投保。这三个条件是:(1)司机已婚。(2)司机为30岁以上的未婚男性。(3)司机为25岁以上的未婚女性。如果以上条件一个也不满足,则公司不为司机投保。请编写一个程序,根据用户输入司机的婚姻状态、性别和年龄,判断该司机是否已投保。运行结果如图4-1所示。

图4-1运行结果

#include "stdio.h"

main()

{char gender,ms;

int age;

/*接受司机的详细信息*/

printf("\n\n\t司机的详细信息\n\n");

printf("\n\t司机的婚姻状况(y/n):");

scanf("\n%c",&ms);

printf("\n\t司机的性别(M/F):");

scanf("%d",&age);

/* 多重if 结构*/

if (ms=='Y'||ms=='y') /*检查司机的婚姻状况*/

【相关知识】

1.选择结构程序设计

选择结构又称分支结构,有二分支或多分支结构。这种结构根据条件判断结果,选择执行不同的程序分支。选择结构是程序的基本结构之一,几乎所有程序都包含选择结构。C语言中可以用两种控制语句来实现程序的分支控制,即if语句和switch语句。用它们均可构成选择结构。

2.单分支选择if语句

单分支选择if语句的形式为:

if(表达式)语句;

执行过程,先判断表达式的值,如果成立,则行后面的语句。否则什么也不执行。3.双分支选择if语句

双分支选择if语句的形式为:

if(表达式)语句l;else 语句2;

这个条件语句的执行过程,先判断表达式的值,如果成立,执行语句1,如果不成立,执行语句2。

4.多分支选择if语句

多分支选择if语句的形式为:

if(表达式1)语句1;

else if(表达式2)语句2;

else if(表达式3)语句3;

………

else if(表达式n)语句n;

else 语句n+1;

其语句是,依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1。然后继续执行后续程序。

实际上第三种if语句是第二种语句的嵌套形式。我们可以把第一个判断的else部分看成是一个内嵌语句,它本身是一个语句,而且可以依次类推,即可写成:

if(表达式1)语句1;

else{if(表达式2)语句2;

else{if (表达式3)语句3;

………

else{if (表达式n)语句n;

else 语句n+1;}…}}

关于这三种形式的语句的使用,有几点请注意:

(1)if之后的条件,必须以“(表达式)”的形式出现,即括号不可少,而表达式可为任意表达式,可以是关系表达式或逻辑表达式,也可以为其他表达式。

(2)在后两种if语句中,有多个内嵌语句,每个内嵌语句都必须以“;”结束。

(3)三种形式的if语句中内嵌语句处只能有一个语句。如果要用n个语句,则必须使用{}将它们组成一个复合语句。

5. if语句的嵌套

在if语句中又内嵌if语句则称为语句的嵌套。前面已说明,多分支选择if语句本身就可看成为if语句的嵌套形式。其一般形式为:

if ()

if () 语句1;/*内嵌if语句*/

else 语句2;

else

if 语句3;/*内嵌if语句*/

else 语句4;

在使用内嵌if语句时,要注意if和else的配对,因为if语句的第一种形式中只有if没有else。C语言在编译源程序时总是将else与它前面最近的if配对。

6.条件表达式构成的选择结构

C语言另外还提供了一个特殊的运算符——条件运算符,由此构成的表达式也可以形成简单的选择结构,这种选择结构能以表达式的形式内嵌在允许出现表达式的地方,使得可以根据不同的条件使用不同的数据参与运算。它的运算符符号是“?:”。这使C语言提供的唯一的三目运算符,即要求有三个运算对象。它的表达式形式如下:

表达式1?表达式2:表达式3

条件表达式的运算功能,当“表达式1”的值为非零时,“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,“表达式3”的值作为整个条件表达式的值。此运算符优先于赋值运算符,但低于关系运算符与算术运算符。例如有如下表达式:

y=x>10?100:200

首先要求出条件表达式的值,然后赋给y。在条件表达式中,要先求出x>10的值。若x 大于10,取100作为表达式的值并赋予变量y;若x小于或等于10,则取200作为表达式的值并赋予变量y。

【课堂精练】

1.输入三个实数,按从小到大顺序输出。程序运行结果如图4-2所示。

图4-2 程序的运行结果

根据程序的运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{ float a,b,c,t;

printf("请输入三个数a,b and c:\n");

scanf ("%f%f%f",&a,&b,&c);

printf("输入的三个数为:");

printf ("%6.2f,%6.2f,%6.2f\n",a,b,c);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

___________________________________

if(b>c)

{t=b;b=c;c=t;}

printf("排序后的三个数为:");

printf ("%6.2f,%6.2f,%6.2f\n",a,b,c);

getch(); }

2.编程实现:根据性别sex和身高tall给某数据分类,如果sex为‘F’,当tall>=150时,输出A,否则输出B;若sex不为‘F’,当tall>=172时,输出A,否则输出B。程序的运行结果如图4-3所示。

图4-3 程序运行结果

根据程序运行结果,请将下面程序补充完整并调试。

#include "stdio.h"

main()

{ int tall;

char sex;

printf(" 请输入性别和身高:");

scanf("%c%d",&sex,&tall);

if (sex=='F')

{ if(tall>=150) /*内嵌if-else语句*/

_________________________________________

else printf("B"); }

else

{ if(tall>=172)

printf("A");

else printf("B"); }

getch(); }

相关文档
最新文档