C程序的流程控制教材
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
37
思考题一:
程序3: main()
{ int x,y; scanf("%d",&x); y=-1; if(x!=0) if(x>0) y=1; else y=0; printf("x=%d,y=%d\n",x,y); }
38
思考题一:
程序4: main()
{ int x,y; scanf("%d",&x); y=0; if(x>=0) if(x>0) y=1; else y=-1; printf("x=%d,y=%d\n",x,y); }
定的结果(真或假)决定执行给出的几种操作之一
。
单分支结构
if语 句
双分支结构 多分支结构 if语句的嵌套
20
3.2.1 单分支结构if语句 引例:如果学生成绩(score)不低于60分,则输
出“合格” 格式: if(表达式) 语句;
21
3.2.1 双分支结构if语句 引例:如果学生成绩(score)不低于60分,则输
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); }
加 强 自 身 建 设,增 强个人 的休养 。2020年 11月 10日上 午11时 22分20.11.1020.11.10
追 求 至 善 凭 技术开 拓市场 ,凭管 理增创 效益, 凭服务 树立形 象。2020年 11月 10日 星期二 上午11时 22分 31秒11:22:3120.11.10
专 业 精 神 和 专业素 养,进 一步提 升离退 休工作 的质量 和水平 。2020年 11月 上午11时 22分 20.11.1011:22November 10, 2020
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语句用来判定所给定的条件是否满足,根据判
39
思考题二:
输入两个实数,按数值由小到大的次序输出这 两个数。
输入三个实数,按数值由小到大的次序输出这 三个数。
40
课堂小结:
关系运算和逻辑 运算
关系运算符:<,<=, >,>=,= =,!= 逻辑运算符:&& , || , !
各种运算符的优先级,表达式综合应用 if语句—单分支
if…else语句—双分支
A
B
(a) “与” A
B
(b) “或” A
(c) “非”
三个基本逻辑运算
13
3.1.3 逻辑运算符
C语言提供三种逻辑运算符: 1、&& 逻辑与(相当日常生活中:而且,并且,只在
两条 件同时成立时为“真”) 2、|| 逻辑或(相当日常生活中:或,两个条件只要有
一个 成立时即为“真”) 3、!逻辑非(条件为真,运算后为假,条件为假,运
思考--如何写程序 ?
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,则输出“不 合格”。
选择结构—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
{ 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子句数目 不一样时
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
逻辑表达式注意问题:
缺点:条件表达式复杂且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;
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、如果在一个表达式中不同位置上出现数值,应区分
3
本节知识点
1 C语言中的逻辑值 2 关系运算符与关系表达式 3 逻辑运算符与逻辑表达式 4 if…else结构的应用 5 if-else if结构的应用 6 if语句的嵌套应用
1 关系和逻辑运算 2 if语句的应用
重点
难点Leabharlann Baidu
4
前面学过的运算符和表达式 ? 比较? 并且?
5
3.1.1 命题的“真”、“假”与C语言中的逻
安 全 象 只 弓 ,不拉 它就松 ,要想 保安全 ,常把 弓弦绷 。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。 有以下几个程序,请判断哪个是正确的?
29
说明: 1、三种形式的if语句中的“表达式”一般为关系表达式
或逻辑表达 式,但不限于这两种表达式。 例如:if (‘a’) printf (“%d ”,’a’);
能运行否?
30
说明:
2、else子句不能单独使用,必须是if语句的一部分,与 if配对使
用。 例如:if(‘a’) printf(“%c”,’a’);
THE SCHOOL OF SOFTWARE ENGINEERING OF HUST
1
C语言的结构 C语言的三大结构:顺序结构、选择结构和循环 结构
S1
真
假
P
S2
S1
S2
S3
P
假
真 S2
(a)顺序结构
(b)选择结构
(c)循环结构
2
本章内容提要
3.1 判断 3.2 选择型程序设计 3.3 循环型程序设计 3.4 综合应用 3.5 本章小结 3.6 思考题
23
3.2.2 多分支结构if语句
特点:满足条件即执行语句
分析一: 单分支结构
if(表达式) 语句;
程序段:
if(score>=90) printf(“优秀”)
if(score>=80&&score<90) printf(“良 好 if(”sc)ore>=70&&score<80) printf(“中 等 if(”sc)ore>=60&&score<70) printf(“合 格 if(”sc)ore<60) printf(“不合格”)
8
关系表达式注意问题: 1、表达式5>2>7>8在数学上允许否?在C中是否允
许? 按自左而右的结合求解 : ① 5>2值为1; ② 1>7值为0; ③ 0>8的值为0。
即整个关系表达式的值为 0。
9
关系表达式注意问题: 2、由于关系表达式的值是整型数0或1,故也可
以将其 看成是一种整型表达式。例如,若有:
辑值
例如,下面一些命题:
1、小强是个大学生
2、今天下雨了
3、a≥3
4、a≥b≥c
5、a≥5或c≥4
判断是针对命题的“真”、“假”进行的。
关系表达式和逻辑表达式是C语言中描述命题的两种 基本形式
6
3.1.2 关系运算符
关系运算是逻辑运算中比较简单的一种,“关系 运算”就是“
比较运算”,指in对t a两=5个; 表达式结值果的为大真小(比Tr较ue。)
1.0 之间的差小于10-5(或一个其它的很小的数),就认
为
11
关系表达式注意问题: 4、要表示x在区间[a,b]中,在数学中使用表达
式a≤x≤b 可否?在C语言中使用表达式“a<=x<=b”可否?
假设a=0;b=0.5。若 x=0.3
上式可改写为: a<=x 并且 x<=b
12
3.1.3 逻辑运算符与逻辑表达式
时 间 是 人 类 发展的 空间。 2020年 11月10日 星期 二11时 22分31秒 11:22:3110 November 2020
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与
例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:判断某一年是否闰年。 闰年的条件是符合下面两个条件之一:
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)
出“合格”,否则输出“不合格”。 格式: if(表达式) 语句1 ; else 语句2;
22
3.2.2 多分支结构if语句 引例:如果学生成绩(score)不低于90分,则输
出“优秀”;如果80≤score<90,则输出“良好”; 如果70≤score<80 ,则输出“中等”;如果 60≤score<70 ,则输出“合格”;如果score<60, 则输出“不合格”。
思考题一:
程序3: main()
{ int x,y; scanf("%d",&x); y=-1; if(x!=0) if(x>0) y=1; else y=0; printf("x=%d,y=%d\n",x,y); }
38
思考题一:
程序4: main()
{ int x,y; scanf("%d",&x); y=0; if(x>=0) if(x>0) y=1; else y=-1; printf("x=%d,y=%d\n",x,y); }
定的结果(真或假)决定执行给出的几种操作之一
。
单分支结构
if语 句
双分支结构 多分支结构 if语句的嵌套
20
3.2.1 单分支结构if语句 引例:如果学生成绩(score)不低于60分,则输
出“合格” 格式: if(表达式) 语句;
21
3.2.1 双分支结构if语句 引例:如果学生成绩(score)不低于60分,则输
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); }
加 强 自 身 建 设,增 强个人 的休养 。2020年 11月 10日上 午11时 22分20.11.1020.11.10
追 求 至 善 凭 技术开 拓市场 ,凭管 理增创 效益, 凭服务 树立形 象。2020年 11月 10日 星期二 上午11时 22分 31秒11:22:3120.11.10
专 业 精 神 和 专业素 养,进 一步提 升离退 休工作 的质量 和水平 。2020年 11月 上午11时 22分 20.11.1011:22November 10, 2020
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语句用来判定所给定的条件是否满足,根据判
39
思考题二:
输入两个实数,按数值由小到大的次序输出这 两个数。
输入三个实数,按数值由小到大的次序输出这 三个数。
40
课堂小结:
关系运算和逻辑 运算
关系运算符:<,<=, >,>=,= =,!= 逻辑运算符:&& , || , !
各种运算符的优先级,表达式综合应用 if语句—单分支
if…else语句—双分支
A
B
(a) “与” A
B
(b) “或” A
(c) “非”
三个基本逻辑运算
13
3.1.3 逻辑运算符
C语言提供三种逻辑运算符: 1、&& 逻辑与(相当日常生活中:而且,并且,只在
两条 件同时成立时为“真”) 2、|| 逻辑或(相当日常生活中:或,两个条件只要有
一个 成立时即为“真”) 3、!逻辑非(条件为真,运算后为假,条件为假,运
思考--如何写程序 ?
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,则输出“不 合格”。
选择结构—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
{ 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子句数目 不一样时
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
逻辑表达式注意问题:
缺点:条件表达式复杂且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;
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、如果在一个表达式中不同位置上出现数值,应区分
3
本节知识点
1 C语言中的逻辑值 2 关系运算符与关系表达式 3 逻辑运算符与逻辑表达式 4 if…else结构的应用 5 if-else if结构的应用 6 if语句的嵌套应用
1 关系和逻辑运算 2 if语句的应用
重点
难点Leabharlann Baidu
4
前面学过的运算符和表达式 ? 比较? 并且?
5
3.1.1 命题的“真”、“假”与C语言中的逻
安 全 象 只 弓 ,不拉 它就松 ,要想 保安全 ,常把 弓弦绷 。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。 有以下几个程序,请判断哪个是正确的?
29
说明: 1、三种形式的if语句中的“表达式”一般为关系表达式
或逻辑表达 式,但不限于这两种表达式。 例如:if (‘a’) printf (“%d ”,’a’);
能运行否?
30
说明:
2、else子句不能单独使用,必须是if语句的一部分,与 if配对使
用。 例如:if(‘a’) printf(“%c”,’a’);
THE SCHOOL OF SOFTWARE ENGINEERING OF HUST
1
C语言的结构 C语言的三大结构:顺序结构、选择结构和循环 结构
S1
真
假
P
S2
S1
S2
S3
P
假
真 S2
(a)顺序结构
(b)选择结构
(c)循环结构
2
本章内容提要
3.1 判断 3.2 选择型程序设计 3.3 循环型程序设计 3.4 综合应用 3.5 本章小结 3.6 思考题
23
3.2.2 多分支结构if语句
特点:满足条件即执行语句
分析一: 单分支结构
if(表达式) 语句;
程序段:
if(score>=90) printf(“优秀”)
if(score>=80&&score<90) printf(“良 好 if(”sc)ore>=70&&score<80) printf(“中 等 if(”sc)ore>=60&&score<70) printf(“合 格 if(”sc)ore<60) printf(“不合格”)
8
关系表达式注意问题: 1、表达式5>2>7>8在数学上允许否?在C中是否允
许? 按自左而右的结合求解 : ① 5>2值为1; ② 1>7值为0; ③ 0>8的值为0。
即整个关系表达式的值为 0。
9
关系表达式注意问题: 2、由于关系表达式的值是整型数0或1,故也可
以将其 看成是一种整型表达式。例如,若有:
辑值
例如,下面一些命题:
1、小强是个大学生
2、今天下雨了
3、a≥3
4、a≥b≥c
5、a≥5或c≥4
判断是针对命题的“真”、“假”进行的。
关系表达式和逻辑表达式是C语言中描述命题的两种 基本形式
6
3.1.2 关系运算符
关系运算是逻辑运算中比较简单的一种,“关系 运算”就是“
比较运算”,指in对t a两=5个; 表达式结值果的为大真小(比Tr较ue。)
1.0 之间的差小于10-5(或一个其它的很小的数),就认
为
11
关系表达式注意问题: 4、要表示x在区间[a,b]中,在数学中使用表达
式a≤x≤b 可否?在C语言中使用表达式“a<=x<=b”可否?
假设a=0;b=0.5。若 x=0.3
上式可改写为: a<=x 并且 x<=b
12
3.1.3 逻辑运算符与逻辑表达式
时 间 是 人 类 发展的 空间。 2020年 11月10日 星期 二11时 22分31秒 11:22:3110 November 2020
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与
例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:判断某一年是否闰年。 闰年的条件是符合下面两个条件之一:
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)
出“合格”,否则输出“不合格”。 格式: if(表达式) 语句1 ; else 语句2;
22
3.2.2 多分支结构if语句 引例:如果学生成绩(score)不低于90分,则输
出“优秀”;如果80≤score<90,则输出“良好”; 如果70≤score<80 ,则输出“中等”;如果 60≤score<70 ,则输出“合格”;如果score<60, 则输出“不合格”。