C程序的流程控制教材
1、能被4整除,但不能被100整除; 2、能被4整除,又能被400整除。
(year%4==0&&year%100!=0)||year%400==0
考虑:判断非闰年的条件?
18
3.2 if选择语句的应用
真
假
P
S1
S2
选择结构
19
3.2 if选择语句的应用
if语句用来判定所给定的条件是否满足,根据判
时 间 是 人 类 发展的 空间。 2020年 11月10日 星期 二11时 22分31秒 11:22:3110 November 2020
例3.1 a>3
int a=2;
结果为假(False)
C语言中提供有如下6个关系运算符: <,<=, >,>=,= =,!=
7
3.1.2 关系表达式 用关系运算符将两个表达式(算术、关系、逻辑、
赋值表达 式等)连接起来所构成的表达式,称为关系表达式。
例3.2: c>a+b 等效于 c>(a+b) a>b==c 等效于(a>b)==c a==b<c 等效于a==(b<c) a=b>c 等效于a=(b>c)
哪些是作 为数值运算或关系运算的对象(原值),哪些是作为
逻辑运算 的对象(例逻3辑.5值:)计。算:5>3&&2||8<4-!0
17
关系和逻辑表达式应用
掌握C语言的关系运算符和逻辑运算符后,可以用一个逻 辑表达式来表示一个复杂的条件。 例3.6:判断某一年是否闰年。 闰年的条件是符合下面两个条件之一:
14
3.1.3 逻辑表达式
用逻辑运算符(逻辑与、逻辑或、逻辑非)将关系 表达式
或逻辑量连接起来构成逻辑表达式。
例3.3:
a>b&&x>y 等效于 (a>b)&&(x>y)
a= =b||x= =y 等效于(a= =b)||(x= =y)
!a||a>b
等效于(!a)||(a>b)
15
逻辑表达式注意问题:
A
B
(a) “与” A
B
(b) “或” A
(c) “非”
三个基本逻辑运算
13
3.1.3 逻辑运算符
C语言提供三种逻辑运算符: 1、&& 逻辑与(相当日常生活中:而且,并且,只在
两条 件同时成立时为“真”) 2、|| 逻辑或(相当日常生活中:或,两个条件只要有
一个 成立时即为“真”) 3、!逻辑非(条件为真,运算后为假,条件为假,运
35
思考题一:
程序1: main()
{ int x,y; scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf("x=%d,y=%d\n",x,y); }
36
思考题一:
程序2: main()
{ int x,y; scanf("%d",&x); if (x>=0) if (x>0)y= 1; else y= 0; else y=-1; printf("x=%d,y=%d\n",x,y); }
1、在逻辑表达式的求解中,并不是所有的逻辑运算符 都被执行
,只是在必须执行下一个逻辑运算符才能求出表达式 的解时,
才执行该运算符。 a&&b&&c
a||b||c
例3.4:
如果a,b,c,d,m,n分别为: 1,2,3,4,1,1
分析整个表达式
(m=a>b)&&(n=c>d)结果和m,n的结果 16
逻辑表达式注意问题: 2、如果在一个表达式中不同位置上出现数值,应区分
选择结构—if语句的应 if-else if语句—多分支
用
if语句的嵌套应用
if语句的注意问题
41
42
加 强 做 责 任 心,责 任到人 ,责任 到位才 是长久 的发展 。20.11.1020.11.10Tuesday, November 10, 2020
人 生 得 意 须 尽欢, 莫使金 樽空对 月。11:22:3111:22:3111:2211/10/2020 11:22:31 AM
3
本节知识点
1 C语言中的逻辑值 2 关系运算符与关系表达式 3 逻辑运算符与逻辑表达式 4 if…else结构的应用 5 if-else if结构的应用 6 if语句的嵌套应用
1 关系和逻辑运算 2 if语句的应用
重点
难点
4
前面学过的运算符和表达式 ? 比较? 并且?
5
3.1.1 命题的“真”、“假”与C语言中的逻
int i=1, j=7,a; a=i+(j%4!=0); 这种表达式的含义不易被理解,初学时不
宜多用
10
关系表达式注意问题:
3、在判定两个浮点数是否相等时,由于存储上的误 差,会
得出错误的结果。例如: 该关1系.0表/3达.0式*3的.0值==为10.0(假),并不为1(真)。所以 应避免
对 上两式别个可f。实 改ab数 写s 表 为(1达 :.0式/3作.0“* 3相.0等-1”.0或)<“1不e-相5 等”的判 fabs是求绝对值函数。只要1.0/3.0*3.0与
8
关系表达式注意问题: 1、表达式5>2>7>8在数学上允许否?在C中是否允
许? 按自左而右的结合求解 : ① 5>2值为1; ② 1>7值为0; ③ 0>8的值为0。
即整个关系表达式的值为 0。
9
关系表达式注意问题: 2、由于关系表达式的值是整型数0或1,故也可
以将其 看成是一种整型表达式。例如,若有:
39
思考题二:
输入两个实数,按数值由小到大的次序输出这 两个数。
输入三个实数,按数值由小到大的次序输出这 三个数。
40
课堂小结:
关系运算和逻辑 运算
关系运算符:<,<=, >,>=,= =,!= 逻辑运算符:&& , || , !
各种运算符的优先级,表达式综合应用 if语句—单分支
if…else语句—双分支
{ s=0.5*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf(area);
}
else printf(“it is not a triangle”);
32
说明:
4、if嵌套语句中,应当注意if与else的配对关系,else 总是与它
上面的最近的未配对的if配对。特别是if/else子句数目 不一样时
缺点:条件表达式复杂且if语句过多
24
3.2.2 多分支结构if语句 分析二:双分支结构可以实现不?
25
3.2.2 多分支结构if-else if语句
分析三:多分支结 构
格式: if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; … else if(表达式m) 语句m; else 语句m+1;
思考--如何写程序 ?
26
有无其他方法?
27
3.2.3 if语句的嵌套应用 在if语句中又包含一个或多个if语句称为if语句的嵌
套。 格式为:
28
3.2.3 if语句的嵌套应用 如果学生成绩(score)不低于90分,则输出“优
秀”;如果80≤score<90,则输出“良好”;如果 70≤score<80 ,则输出“中等”;如果60≤score< 70 ,则输出“合格”;如果score<60,则输出“不 合格”。
安 全 象 只 弓 ,不拉 它就松 ,要想 保安全 ,常把 弓弦绷 。20.11.1011:22:3111:22Nov-2010-Nov-20
重 于 泰 山 , 轻于鸿 毛。11:22:3111:22:3111:22Tuesday, November 10, 2020
安 全 在 于 心 细,事 故出在 麻痹。 20.11.1020.11.1011:22:3111:22:31November 10, 2020
本意
实际
33
说明:
5、if嵌套语句解决匹配问题方法
(1)利用空语句使if子句 (2)利用{ } 。将没有
数量
else子
与else子句数量相同。 句的if语句用{ }括起来
34
Байду номын сангаас
思考题一:
函数: -1(x<0)
y= 0(x=0) 1(x>0)
编一个程序,输入x,输出y。 有以下几个程序,请判断哪个是正确的?
else printf (“%c”,’b’); else printf (“%c”,’c’);
31
说明:
3、在if和else后面可以只含一个内嵌的操作语句,也可 以有多个
操作语句构成的例语如句:块求(边复长合分语别句为)a。,b语,c句的块三用角{形}括起
来。
if(a+b>面c&积&?b+c>a&&c+a>b)
29
说明: 1、三种形式的if语句中的“表达式”一般为关系表达式
或逻辑表达 式,但不限于这两种表达式。 例如:if (‘a’) printf (“%d ”,’a’);
能运行否?
30
说明:
2、else子句不能单独使用,必须是if语句的一部分,与 if配对使
用。 例如:if(‘a’) printf(“%c”,’a’);
23
3.2.2 多分支结构if语句
特点:满足条件即执行语句
分析一: 单分支结构