当前位置:
文档之家› 919144-C语言程序设计教程——面向计算思维和问题求解-第4章-新
919144-C语言程序设计教程——面向计算思维和问题求解-第4章-新
if (y > max)
/*如果y > max,则把y赋给max*/
max = y;
printf ("max=%d\n", max); /*输出max的值*/
}
4.3.1 if语句
运行结果:程序运行时若输入:59↙,结果如下图。
4.3.2 if-else语句
if-else语句用于双分支选择结构。根据条件的判定结果,选 择执行两种操作中的一种。if-else语句的基本格式如下:
4.2.2 逻辑运算及其表达式
同样,对于逻辑表达式:(表达式1) || (表达式2),如果表达 式1的值为1,直接得出整个表达式的值也为1,而不再计算表达 式2的值。
if条件语句一般用于只有两种选择的情况。满足判定条件 执行一种操作,否则执行另一种操作。对if条件语句进行嵌套, 可以处理多种选择情况。
4.3.2 if-else语句
问题分析:目前只需要对动物分成两类。依题意,分类的条件 应为 “动物有毛发,且分泌乳汁”,条件为真时输出“是哺乳 动物”;否则输出“是鸟”。 算法设计:本例算法简单,采用if-else语句可实现该功能。算法 流程图略。
/*输出面积,保留两位小数*/
}
else
/*否则*/
printf ("构不成三角形\n");
/*输出“构不成三角形”*/
}
4.3.2 if-else语句
运行结果:程序运行时若输入345↙,结果如下图所示。
4.3.2 if-else语句 例4-5 用if-else语句求两个整数中的最大值。
问题分析:在例4-3中用if语句求出了两个整数中的最大值,实 现这一功能也可以采用if-else语句。方法是:比较两个变量x和y 的值,如果x>y则输出x,否则输出y。
}
4.3.2 if-else语句
运行结果: 程序运行时若输入:59↙,结果与例4-3的完全相同。
4.3.2 if-else语句
例4-6 本章在引例中提出了4种动物的识别问题,现在先进行 简单分类:将“老虎、金钱豹、信天翁、企鹅”分为哺乳类和 鸟类,划分标准是:如果动物有毛发,且分泌乳汁,则该动物 是哺乳动物,否则是鸟(仅限于此4种动物)。
求解选择问题的第一要素是构筑计算机所能识 别的判定条件,一般情况下,采用关系表达式和逻 辑表达式描述条件(switch语句例外)。
4.2.1 关系运算及其表达式
C语言中的关系运算符共有6个。 表4-1列出了各种运算符的含义、优先级和结合方向。
4.2.1 关系运算及其表达式
表4-1 关系运算符及其含义、优先级、结合方向
问题分析:对给定的3个边长,可按照条件“任意两边之和大 于第三边”进行判定。若条件满足,则使用海伦公式计算面积 ,否则显示“构不成三角形”。
算法设计:解决本问题的算法流程图第三章已经给出。参见图 3-14。
4.3.2 if-else语句
程序设计: #include<stdio.h> #include<math.h> void main( )
4.2.2 逻辑运算及其表达式
表4-2 逻辑运算符的优先级与结合方向
运算符
含义
优先级
!
逻辑非
高
&&
逻辑与
中
||
逻辑或
低
结合方向 自右至左
自左至右
其中,“&&”和“||”是双目运算符,“!”是单目运算符。
用逻辑运算符将运算数连接起来组成的表达式,称为逻辑表达 式。其中的运算数可以是常量、算术表达式、关系表达式、逻辑 表达式、赋值表达式等。逻辑表达式的值为逻辑值。
4.2.2 逻辑运算及其表达式
例4-2 设有int x = 4; 判断下列三个逻辑表达式的值: (1) x > 0 && x < 10 (2) x > 0 || x < -10 (3) ! (x > 0)
解: x > 0 && x < 10的值为1;x > 0 || x < -10的值为1;! (x > 0)的值为0。
4.1.1 问题描述
以下6条规则表示计算机已经掌握的知识: 规则1:如果动物有毛发,且分泌乳汁,则该动物是哺乳动 物。 规则2:如果动物有羽毛,则该动物是鸟。 规则3:如果动物是哺乳动物,且是黄褐色的、有暗斑点, 则该动物是是金钱豹。
4.1.1 问题描述
规则4:如果动物是哺乳动物,且是黄褐色的、有黑条纹, 则该动物是虎。
0
0
0
0
1
0
1
0
1
1
1
0
0
1
0
1
1
1
1
0
4.2.2 逻辑运算及其表达式
应用中,有时会出现算术运算、关系运列如下:
! 算术运算符 关系运算符 &&、|| 赋值运算符
(高) (低)
4.2.2 逻辑运算及其表达式
需要说明的是,逻辑运算有时会引起“短路”。对于如下 的逻辑表达式:
4.3.1 if语句
if语句用于单分支选择结构。基本格式如下: if (表达式)
语句块S 其中,表达式一般为关系表达式或逻辑表达式;语句块可以 是一条语句,也可以是多条语句组成的复合语句。复合语句应 该用“{ }”括起来。
4.3.1 if语句
if语句的执行过程如下: 若表达式的值为真(非0),则执行语句块S;否则跳过语句 块S执行后续语句。如图4-2所示。
关系表达式的值是一个逻辑值,即只有两种可能:“真” 或“假”。当一个关系表达式所表示的条件成立时,认为此关 系表达式的值为“真”;否则为“假”。C语言中没有专门的逻 辑型数据,而是用0表示“假”,用1(或非0)表示“真”。
4.2.1 关系运算及其表达式
例4-1 设有变量定义:int a = 1, b = 2, c = 3, x = 4; 试判断下 列关系表达式的值:
if (表达式) 语句块S1
else 语句块S2
4.3.2 if-else语句
if-else 语句的执行过程如下:
若表达式的值为真,则执行语句块S1;否则执行语句块S2。
4.3.2 if-else语句
例4-4 输入3个边长,若能构成三角形,则计算并输出三角形 的面积;否则输出信息:“构不成三角形”。
(1) x != 0 (2) c > a + b (3) ‘y’ < ‘x’ (4) c < a < b
解:x != 0的值为1;c > a + b的值为0; ‘y’ < ‘x’的值为0; c < a < b的值为1。
4.2.1 关系运算及其表达式
具体分析如下:
(1) 因为x的值为4,满足关系表达式x != 0,所以x != 0的值为1; (2) 因为算术运算符优先级高,应先计算a + b的值再与c的值比较 ,得到:3>3,该不等式显然不成立,所以 c > a + b的值为0; (3) 表达式 ‘y’ < ‘x’中的两个运算数是字符型常量,应该比较它们 的ASCII码,而x和y的ASCII码分别为120和121,所以‘y’ < ‘x’的 值为0。 (4) 按照自左至右的结合方向,先计算c < a的值,结果为0;再计 算0 < b的值,结果为1,所以表达式c < a < b的值为1。
4.1.3 算法设计
求解问题的算法如下: 1.依据规则1、2识别出动物所属的类:哺乳动物、鸟、其 它未知类。 2.在哺乳类中依据规则3、4识别出金钱豹、虎、未知哺乳 动物;在鸟类中依据规则5、6识别出信天翁、企鹅、未知鸟。 用C语言实现这一算法,首先需要根据规则1-6归纳出判定 条件;其次采用选择结构实现不同条件下的不同操作。
运算符
含义
优先级
<
小于
>
大于
高
<=
小于或等于
>=
大于或等于
==
等于
低
!=
不等于
结合方向 自左至右
表中将关系运算符按优先级高低分为两组,同一组运算符
的优先级相同。
4.2.1 关系运算及其表达式
关系运算符是双目运算符。用关系运算符将两个运算数连 接起来组成的表达式称为关系表达式。其中,运算数可以是常 量,也可以是算术表达式、关系表达式、赋值表达式等。
规则5:如果动物是鸟,且善飞,则该动物是信天翁。 规则6:如果动物是鸟,且不会飞、善游泳和潜水、黑白二 色,则该动物是企鹅。
4.1.2 问题分析
从以上描述可以看出,这是一个典型的选择问题。在本例 中提出的6条规则,给出了识别动物的判定条件。可以根据这 些条件设立问答题,通过用户的回答判断出动物的种类。不难 发现,6条规则可分为两个层次:第一层区分哺乳动物与鸟; 第二层确定具体动物。
图4-2 单分支选择结构
4.3.1 if语句
例4-3 用if语句求两个整数中的最大值。 问题分析:首先需要输入两个待比较的整数,并分别赋给变量 x和y。再设置一个用于存储最大值的变量max,其初值可设为x 。若y比x大,则将y的值赋给max。最后输出max的值。
4.3.1 if语句
算法设计:根据以上分析,可画出本例的 算法流程图,如图4-3所示。
4.2.2 逻辑运算及其表达式
在实际应用中,需要进行判断的条件往往是由多个条件复 合而成的。例如:在平面直角坐标系中确定一个点(x , y)在第 三象限内的条件是“x<0且y<0”,这种情况下需要引入逻辑表 达式。
C语言中提供了三种逻辑运算:“与”、“或”、“非” ,其运算符、优先级、结合方向参见表4-2。
(3) !(x > 0)表示“x>0”的反面,即x<=0,当x的值为4时显然不 成立,所以表达式!(x > 0)的值为0。