C语言程序设计第3章 选择结构流程和应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
试一试
问题3.2 逻辑运算符和逻辑表达式的用法演示。请观察程序运行结果。 【程序代码】 #include “stdio.h” void main() { int iX=3,iY=4; printf("iX=%d,iY=%d\n",iX,iY); printf("iX<=5&&iX>=-5 is %d\n",iX<=5&&iX>=-5); printf("iX<iY||iX+iY==8 is %d\n",iX<iY||iX+iY==8); printf("'A'&&iX-iY<0 is %d\n",'A'&&iX-iY<0); printf("!2.56 is %d\n",!2.56); printf("!99&&iX<iY||iX*iY==12 is %d",!99&&iX<iY||iX*iY==12) ; getch(); }
2 单分支和双分支选择结构程序设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。
关系表达式
用关系运算符把两个表达式连接起来的式 子称为关系表达式。一般形式为: 表达式1 关系运算符 表达式2 该表达式执行时,先计算“表达式1”和 “表达式2”的值,然后进行比较,比较的 结果为真时关系表达式的值为1,否则为0。
试一试
问题3.1 关系运算符和关系表达式的用法演示。请观察程序运行结果。 【程序代码】 #include “stdio.h” void main() { int iX=3,iY=4,iZ=5; printf("iX=%d,iY=%d,iZ=%d\n",iX,iY,iZ); printf("iX>iY is %d\n",iX>iY); printf("iX<iY is %d\n",iX<iY); printf("iX<iY==iX>iY is %d\n",iX<iY==iX>iY); printf("iX<=iY is %d\n",iX<=iY); printf("(iX+iY)==iZ is %d\n",(iX+iY)==iZ); }
3 多分支选择结构程序设计
嵌套if-else语句 switch语句
嵌套if-else语句
学一学 所谓嵌套就是在if-else语句的if或else子句中又包含了一个或多个ifelse语句。其目的是解决多分支选择问题,其一般形式为: if ( 条件1 ) 语句1; else if ( 条件2 ) 语句2; else if ( 条件3 ) 语句3; ┇ else if(条件n-1)语句n-1; else 语句n; 这是由双路选择语句所构成的多路选择结构。此处的“语句1”、 “语句2”…“语句n”可以是简单语句,也可以是用一对大括号“{ }” 括起来的复合语句。语句流程图如图3-6所示。
流程图
程序代码
#include “stdio.h” void main() { int iOnOff; printf("please input 1 or a integer:"); scanf("%d",&iOnOff); if(iOnOff==1) printf("\nthe light is on."); else printf("\nthe light is off."); getch(); }
逻辑运算符及其运算规则
逻辑运算可以表示运算对象的逻辑关系。 表3-2给出了C语言中逻辑运算符的种类、 功能及运算规则 。表3-3给出了逻辑运算 真值表,说明了当参加逻辑运算的运算对 象为不同组合时,各种逻辑运算得到的结 果。
逻辑表达式
关系表达式只能描述单一的条件,而当选择判定的条件 有多个时,就要借助于逻辑表达式。用逻辑运算符连接 起来的式子称为逻辑表达式。一般形式为: 表达式1 && 表达式2 或: !表达式 或: 表达式1 || 表达式2 逻辑表达式执行时,先计算“表达式1”和“表达式2”或 “表达式”的值,然后进行逻辑运算,运算的结果为真 时逻辑表达式的值为1,否则为0。
练一练
问题:编一程序,从键盘输入一个整数, 判断它的奇偶性。如果输入的是奇数,输 出“ODD”,如果输入的是偶数,则输出 “EVEN”。 提示:一个数若能被2整除,则该数是偶 数,若这个数不能被2整除,则该数为奇 数。判断一个数能否被另一个数整除可用 求余运算,比如5%3=1,说明5不能整除 3,6%3=0,说明6可以整除3。
流程图
程序代码
#include “stdio.h” void main() { int iX,iY; printf("please input a integer:"); scanf("%d",&iX); iY=iX; if (iX<0) iY=-iX; printf("\n|%d|=%d",iX,iY); getch(); }
流程图
试一试
问题3.7 从键盘输入一个自变量x,求分段函数 y=f(x)的值,f(x)的表达式如下: 【解题步骤】 1.定义整型变量iX,iY; 2.从键盘输入数据放iX; 3.根据iX的值,选择相应的函数表达式计算iY; 4.输出iY。
流程图
程序代码
#include “stdio.h” void main() { int iX,iY; printf("please input a integer:"); scanf("%d",&iX); if(iX>5) iY=iX+3; else if(iX<0) iY=2*iX+30; else iY=0; printf("f(%d)=%d",iX,iY); getch(); }
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印一 张饮酒卷,使的能饮酒的同学可以获取饮 酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
条件运算符与条件表达式
学一学 C语言中有一种特有的运算符称为条件运算符, 即“?:”。它在某种程度上可以起到逻辑判 断的作用,一样可以实现双分支选择结构。由 条件运算符构成的表达式称为条件表达式,与 if-else语句具有相同的功能。其一般形式为: 表达式1 ?表达式2 :表达式3 运算规则为:如果“表达式1”的值为真, 则条 件表达式的运算结果等于“表达式2”的值,否 则,运算结果等于“表达式3”的值。
练一练
问题: 1.请用if-else语句实现问题3-6的双分支选 择结构。 2.用条件表达式实现问题3-5的双分支选择 结构。
小结
1.if和else同属于一个if语句,else不能作为语句单独使用,它只是if语句的一 部分,与if配对使用。因此程序中不可以没有if而只有else。 2.if-else 语句在执行时,只能执行与if有关的语句或者执行与else有关的语句, 而不可能同时执行两者。 3.if语句的表达式可以是任意类型的C语言的合法的表达式,除常见的关系表 达式或逻辑表达式外,也允许是其它类型的数据,如整型、实型、字符型 等。 4.在if 和else的后面,可以是单条语句,也可以复合语句。单条语句时,注 意别忘记写分号“;”,复合语句时要注意“{}”的后面不能加“;”。 5.条件运算符的其结合性为“从右到左”(即右结合性)。比如 表达式iA>iB?iA:iC>iD?iC:iD相当于iA>iB?iA:(iC>iD?iC:iD),如果 iA=1,iB=2,iC=3,iD=4,则上述条件表达式的值等于4。 6.条件表达式一般形式(表达式1 ?表达式2 :表达式3)中的“表达式1”、 “表达式2”、“表达式3”的类型,可以各不相同。“表达式2”和“表达式3” 不仅可以是数值表达式,也可以是赋值表达式或函数表达式。比如 iX>iY?printf(“%d”,iX):printf(“%d”,iY) 如果iX=3,iY=4,则条件表达式执行结果为输出iY的值。
试一试
问题3.6 编一程序从键盘输入两个整数,输出较大 的一个。 解题步骤: 1.定义整型变量iX,iY用来存放两个整数; 2.定义变量iMax,存放两个数中较大的一个; 3.从键盘接收用户输入; 4.比较iX和iY,大者放iMax中; 5.输出iMax。
流程图
程序源自文库码
#include “stdio.h” void main() { int iX,iY,iMax; printf("please inpit 2 integers :"); scanf("%d,%d",&iX,&iY); iMax = iX>iY?iX:iY; printf("iMax=%d",iMax); getch(); }
第3章 选择结构流程和应用
本章内容中我们将学习 1 选择结构判定条件的构成 2 单分支与双分支选择结构程序设计 3 多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符,其 运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符,如 表3-1所示。
问题3.3 逻辑运算符&&和||用法演示。请观察程序运行 结果。 【程序代码】 #include “stdio.h” void main() { int iX=3,iY=4; printf("iX>iY&&(iX=10) is %d\n",iX>iY&&(iX=10)); printf("iX=%d\n",iX); printf("iX<iY||(iY=11) is %d\n",iX<iY||(iY=11)); printf("iY=%d\n",iY); getch(); }
小结
1. 不要把关系运算符“==”误用为赋值运算符“=”。比如,如果将判断 iX是否 等于8的关系表达式“iX == 8”写成“iX = 8”,那么它永远为“真”(不管 iX原来的值是多少)。 2.正确书写关系表达式。如果表示“iX大于等于5,且iX小于等于20”,在数学 中可写为式子:5 ≤iX ≤ 20,而在C程序中,如果写成下面的表达式: 5 <= iX <= 20 则是错误的。但这种错误是一种语义上的错误,而不是语法上的错误,编 译器查不出来,编译时不会报告错误,但运行时,不论iX为何值(比如为 3或60)表达式的值都是“真”,所以这种错误比较“隐蔽”,不易被发 现,希望引起注意。正确的写法应该是: 5 <= iX &&iX <= 20 3.算术运算符、关系运算符、逻辑运算符、赋值运算符在一起进行混合运算 时,各类运算符的优先级如下所示(自左至右,从高到低): !(非) —> 算术运算 —> 关系运算 —> && —> || —> 赋值运算
流程图如图3-3所示,若“条件”为 “真”,则执行“语句1”;否则执行 “语句2”。 此处的“语句1”和“语句2”可以是简单 语句,也可以是用一对大括号“{ }”括 起来的复合语句。
条件
Y
N
语句1
语句2
试一试
问题3.5 编一程序控制电灯开关。从键盘输入1 表示开灯,这时显示“the light is On”,输入0 或其它数表示关灯,显示“the light is off” 。 【解题步骤】 1.定义整型变量iOnOff; 2.从键盘接收用户输入存入变量iOnOff; 3.根据iOnOff是否为1输出电灯的开关状态。 若iOnOff=1,则输出”the light is On”,否则电 灯为关灯状态,输出”the light is off”。
条件
Y
N
语句
试一试
问题3.4 从键盘输入一个数,输出其绝对值。 解题步骤 1.定义变量二个int变量iX,iY,其中iX用来接收 用户从键盘输入的数据,iY用来存放iX的绝对值。 2.从键盘输入一个整数放iX; 3.把iX放iY; 4.正数的绝对值是正数本身,负数的绝对值是其 相反数。所以,如果iX<0,则iY= -iX,否则不 需要做什么; 5.输出iX和iY。