第4章 选择结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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(); }