c4第四章选择结构程序设计

合集下载

C4选择结构程序设计解析

C4选择结构程序设计解析

优先级次序: ! (逻辑非)14 算术运算符13/12 关系运算符10/9 &&(逻辑与)5 ||(逻辑或)4 赋值运算符2
6
2.逻辑表达式
由逻辑运算符和运算对象所组成的表达式称为逻辑表达 式。逻辑运算的对象可以是C语言中任意合法的表达式。 例如:表达式(a>b)&&(x>y) 当a大于b且x大于y时,结果为“真”,用数值1来表示;否 则,结果为“假”,用数值0来表示。
2018/10/15 16:48:14 长江大学计算机科学学院 5
4.1.3 逻辑运算符与逻辑表达式
1.逻辑运算符及其优先级
C语言提供了三种基本的逻辑运算符。逻辑代数的其它 逻辑运算都可以转化为这三种逻辑运算的组合。
表4.2 逻辑运算符及其优先级
5 4 14 右结合
2018/10/15 16:48:14 长江大学计算机科学学院
例4.4 编写一程序实现符号函数的功能。
#include <stdio.h> void main() { int x, y ; printf("Enter x:"); scanf("%d", &x ); y= -1; 程序运行情况如下: if (x!=0) Enter x:8<CR> { if(x>0) y=1; } x= 8, y= 1 else y=0; printf("x=%d, y=%d\n", x, y); }
例:“非完全求解”
#include "stdio.h" void main() {int x,a,b,c; a=1;b=2;c=3; x=(a-1)&&(++b)&&(++c); printf("1:a=%d,b=%d,c=%d,x=%d\n",a,b,c,x); a=1;b=2;c=3; x=a&&(b-2)&&(++c); printf("2:a=%d,b=%d,c=%d,x=%d\n",a,b,c,x); a=1;b=2;c=3; x=a&&(++b)&&(++c); printf("3:a=%d,b=%d,c=%d,x=%d\n",a,b,c,x); }

C语言程序设计第4章选择结构程序设计ppt课件

C语言程序设计第4章选择结构程序设计ppt课件

8
printf("grade is E" );
9 else if (score >=60 && score<70 )
10
printf( "grade is D");
11 else if (score >=70 && score<80 )
12
printf( "grade is C");
13 else if (score>=80 && score<90 )
printf("a,b="); scanf("%d,%d",&a,&b); if (a>b) max=a; else max=b; printf("max=%d\n",max); }
结束
8
3.if-else if-else语句
(1)语句格式:
if (表达式1) 语句1
else if (表达式2) 语句2
不再判断,顺序执 行下面的语句
21
4.2 switch语句
switch (表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 …… case 常量表达式n:语句n [default:语句n+1] }
注意:
1. <表达式>可以是整型或字 符型表达式; 2. case后面必须是常量表达 式,不能包含变量; 3. 每个常量表达式的值应互 不相同; 4. case语句先后顺序随意; 5.若从上至下没有找到与表 达式的值相匹配的case,含有 default子句时,执行语句n+1。

pdf肖C4-选择结构程序设计.pd

pdf肖C4-选择结构程序设计.pd

3种逻辑运算符:
&& (逻辑与)、|| (逻辑或)、! (逻辑非)
&& 和 || 是双目运算符,要求有两个操作数。
a&&b
a、b均为真,则a&&b为真。
a||b
a、b之一为真,则a||b为真。
! 是单目运算符,只要求有一个操作数。
!a 若a为真,则!a为假;若a为假,则!a为真。
6
4.2 ——逻辑运算符的优先次序
a!=b==0
等价于 (a!=b)==0,结果为0
a==b<c
等价于 a==(b<c),结果为1
a>b!=b<=3 等价于 (a>b)!=(b<=3),结果为1
3
4.1 关系运算符和关系表达式
关系表达式:将两个操作数用关系运算符连接起来。
关系表达式的值是一个逻辑值,即“真”或“假”, 以数值 1 代表“真”,以 0 代表“假”。
同样,表达式 a||b||c,从左到右,得到任一个“真”时则表 达式的值已确定,不再继续。否则,继续向后判断。
例:int a=1, b=2, m=7, n=8;
(m=a<b)&&(n=a+b),结果m=1,n=3,表达式值为1。
(m=a>b)&&(n=a-b),由于“a>b”值为0,因此m=0,表达 式值已确定为0。而“n=a-b”不被执行,n仍保持原值8。
B. !6
C. !3!=0 D. !2>=3
下列表达式中,结果为0的表达式是 C 。
A. 0<1<2
B. 'a'>0 C. 5>3>2 D. 'A'<'a'

C语言程序设计第四单元选择结构程序设计

C语言程序设计第四单元选择结构程序设计

思路指导
输入:输入学生的成绩存储到变量score中 输出:根据学生的成绩输出学生的等级 条件判断:判断学生成绩符合哪个范围 处理:根据判断,输出学生的等级
相关知识
1.多重if(多分支if语句)的语法格式 if(表达式1)
{语句体1} else if(表达式2)
{语句体2} else if(表达式3)
/*母亲身高*/
printf("你是男孩(b) 还是女孩(g)?");
scanf("%1s", &sex);
printf("你输入你爸爸的身高(cm):");
scanf("%f", &faheight);
printf("你输入你妈妈的身高(cm):");
scanf("%f", &moheight);
条件1 条件2
语句组1 语句组2
条件
语句组n+1 语句组n
语句组n 语句组n+1
相关知识
(二)解决选择问题的基本步骤和方法
选择结构是结构化程序设计的三种结构之一,也是常用的一种 结构,在大多数的程序中都包含有选择结构,一般来说解决这样 的问题用以下的方法和步骤:
1. 判断解决的问题是否是选择问题。 2. 若是选择问题,则判断是哪种选择结构类型,是单分支、双 分支还是多分支结构。 3. 若是选择问题,确定选择结构,确定选择条件、执行过程与 结束过程。 4. 用C语言描述。
此外,如果喜爱体育锻炼,那么可增高身高2%;如果有良 好的卫生饮食习惯,那么可增加身高1.5%。
思路指导
输入:性别(用字符型变量sex存储,输入字母g表示女性, 输入字符b表示男性)、父母身高(用实型变量存储, faheight为其父身高,moheight 为其母身高)、是否喜爱体 育锻炼(用字符型变量sports存储,输入字符y表示喜爱,输 入字符n表示不喜爱)、是否有良好的饮食习惯(用字符型变 量diet存储,输入字符y表示喜爱,输入字符N表示不喜爱)。 输出:身高 处理:利用给定公式和身高预测方法对身高进行预测。 判断条件:性别男还是女、是否喜爱体育锻炼、是否有良好 的饮食习惯。

第四章 选择(分支)结构程序设计

第四章 选择(分支)结构程序设计
选择结构程序设计
本章要点:
1 . 关系表达式
2 . 逻辑表达式
3 . 选择结构程序设计
第四章
选择结构程序设计
主要内容: 1. 关系运算符与关系表达式 2. 逻辑运算符与逻辑表达式 3. if 语句 4. switch 语句
5. 程序举例
C语言程序设计
例: 银行存款的例子 设银行定期存款年利率rate 一年 2.68 % 二年 2.98% 三年 3.5 % 五年及以上 4.2 % 并已知存款期为n年,存款本金为capital元, 编程计算n年后本息之和deposit.
{float score;
printf(“input score:”); scanf(“%f”,&score); if(score>=90) printf(“Excellent!\n”); else if(score>=80) printf(“Good!\n”); else if(score>=70) printf(“Middle!\n”); else if(score>=60) printf(“Pass!\n”); else printf(“Fail!\n”);
4.3 if语句
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
2. 分支执行 if(表达式) 语句1 else 语句2 即 if (P) A else B
当P 为真时(非0)执行A,否则执行B或后续语句。
4.3 if语句
例: if (a>0) printf(“A is a positive\n”); else printf(“A is not a positive\n”);
C语言程序设计
选择结构是三种基本结构(顺序、选择、循环)之

精品课件-C语言程序设计实用教程-第4章 选择结构程序设计

精品课件-C语言程序设计实用教程-第4章 选择结构程序设计

转换成小写字母,否则直接输出*/
printf("ch=%c\n",ch);
}
4.3 switch语句
C语言还提供了另一种用于多分支选择的switch语句,这种 语句把一个表达式的值和一个整数或字符常量表中的元素逐一比 较,发生匹配时,与匹配常数关联的语句被执行。 switch语句的一般形式:
switch(表达式) {case 常量表达式1:语句1;[break;] case 常量表达式2:语句2;[break;] ...... case 常量表达式n:语句n;[break;] [default:语句n+1;[break; ]] }
2\n");
else { if (score<90) printf("Grant grade:
else printf(“Grant grade:
1\n”);}
}
【例4.8】 if语句的嵌套应用。
#include<stdio.h>
main()
{
int a,b;
printf("input a,b=");
if语句中又包含一个或多个if语句称为if语句的嵌套。 一般形式为: if()
if() 语句1; else 语句2 ; else if() 语句3; else 语句4;
【例4.7】 使用嵌套的if语句实现相同的功能,首先根据成绩
的取值范围处理分为两种情况:有或者没有助学金,如果有则
进一步判别等级是一等、二等或三等助学金。
4.1 引例
1.问题描述——学生助学金评定 助学金是高等院校资助贫困学生的一项重要举措,一般助学金 的评定要参考学生的学习成绩。假定助学金的评选规则为:综 合平均成绩在90分及以上的同学可获一等助学金;在 80分 (包括80分)至90分之间的同学可获二等助学金;在60分(包 括60分)至80的同学可获三等助学金;60分以下的同学不能获 助学金。 2.引例分析 首先用最简单的方式处理评定结果:根据某位同学的成绩判断 他能否获取助学金,输出不获得助学金的提示信息,算法的流 程图如图4-1所示。

C语言程序设计:第4章 选择结构程序设计

C语言程序设计:第4章 选择结构程序设计
gt; >= == !=
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 10 10 10 10 9 9
2
例如:
(1) 比较整型变量k大于0,表达式为:k>0 (2) 比较考试成绩score大于等于60,表达式为:score>=60 (3) 比较整型变量k模2等于0,即判断k是否是偶数:k%2==0 (4) 比较字符变量ch的值等于'A',表达式为:ch!='A'
return 0; }
Input 2 integers(a b):100 10<回车> 100,10
Input 2 integers(a b):10 100<回车> 100,10
2.双分支if语句
if (表达式) 语句1 else 语句2
执行过程: 首先先判断表达式的值 若为非0则执行语句1 若为0则执行语句2
if语句的双分支形式,在语法上 视为一条语句。
表达式

语句1

语句2
例4-4:判断整数的奇偶性。从键盘输入一个整数x,根据其奇 偶性输出x是奇数或x是偶数。
Input an integer: 12<回车> 12 is odd number.
#include <stdio.h>
int main()
return 0;
}
例4-5:修改例3-6使用海伦公式计算三角形面积程序的要求,当输入 的三个边长能够构成三角形时,计算面积;否则,输出不能构成三角 形。
思路分析:三角形面积的计算过程与原例题相同,新要求是在“三个 边长能构成三角形”这一条件成立时才进行计算面积,否则直接输出 提示信息。根据数学知识,这一条件可以描述为“任意两个边长之和 大于第三个边长”,输入三个边长a、b、c后,条件可以使用如下的 逻辑表达式描述:

C语言程序设计第4章选择结构程序设计简明教程PPT课件

C语言程序设计第4章选择结构程序设计简明教程PPT课件

例:a<c-d
‘a’+5>c -i-5*j==k+1 a==b<c
C语言中没有专用是“真”和“假”。
C语言程序设计 第4章 选择结构程序设计 5
【例4.1】关系表达式的应用 #include <stdio.h> int main() { char c='m'; int i=2,j=1,k=6; float x=3e+5,y=1.85; printf("%d,%d\n",'a'+7<c,-i-2*j<=k+1); printf("%d,%d\n",1<j<5,x-5.25<=x+y); printf("%d,%d\n",i+j==-2*j+k,k==j==i+9); return 0; }
逐渐缩小判 断的范围
第4章 选择结构程序设计
13
补充1:流程图表示算法(ISO)
流程图是用一些图框来表示各种操作 用图形表示算法,直观形象,易于理解
起止框
输入输出框
判断框
处理框
流程线
连接点
注释框
补充2:流程图表示算法(NS)
N-S流程图用以下的流程图符号:
p Y A N B 当p1成立 A 循环结构 (当型)
思考:求5>2&&8<5-!0 的值
C语言程序设计 第4章 选择结构程序设计 10
逻辑运算符的短路特性:
在C语言中,&&和||逻辑运算符具有短路特性: (1)在一个或多个&&连接的逻辑表达式中,只要有一 个操作数为0(逻辑假),则停止后面的&&运算,因为 此时可以判断逻辑表达式结果为假。 (2)由一个或多个||连接的逻辑表达式中,只要遇到第 一个操作数不为0(逻辑真),则停止后面的||运算,因为 此时可以判断逻辑表达式结果为真。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
则a= 2
例 'a'>0 结果为 1 'A'>100 结果为 0
整理ppt
5
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
7
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
例如,在逻辑表达式 1 && 5 || 0 && 6中, 0 && 6没有运行, 因为对于 || 运算,只要有一个操作数是1,结果就是1。
断应当用: fabs(a-b)<1e-6
2. 注意区分 = 与 ==
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
8
补充知识:
计算机中的实型量又称为浮点数。浮点数的定义决定了 它的绝对精度会随其量级而变化。所以,比较两个浮点 数的最好方法就要利用一个与浮点数量级相关的精确阈 值。
















C语言中,逻辑量的值: 0表示“假”,非0表示“真”,
C语言中,逻辑表达式的结果: 0表示“假”,1表示 “真”,
&&(与运算)就是求交集的运算
||(或运算)就是求并集的运算
整理ppt
11
优先级:
! (2) 高 && (11) || (12) 低
结合方向: ! :从右向左
第四章
选择结构程序设计
整理ppt
1
教学目的: 掌握选择结构的形式,掌握典型算法。
教学要求: 掌握关系表达式和逻辑表达式以及在选择结 构中的使用。学会把现实问题通过表达式的 形式表示。
整理ppt
2
• 关系运算符和关系表达式
Relational Operators and Expressions
if(fabs(a-b)/max(fabs(a)-fabs(b))<=TOLERANCE)
整理ppt
9
(补充)从数学而言,当y是正时,x+y>x等价于 y>0,它们的逻辑结果都是true。但从计算机而言, 当x与y的绝对值相差很大时,这个值就有可能是
false
#include <stdio.h>
main()
{ double x=1e20,y=10;
printf("%d", x+y>x);
getch(); }
/* 输出是0 */
整理ppt
10
– 逻辑运算符和以逻辑运算符组成的逻辑表达式
逻辑运算符 – 种类: && | | ! ( 与 或 非 ) – 逻辑运算真值表
a
b








!a
!b a&&b a||b
例如:对于 float a,b; 不要用 if(a==b) 进行比较, 而要用 if(fabs(a-b)<=epsilon*fabs(a)) 进行比较,
(其中要确保a不会为0)epsilon是一个控制接近度的值。 用绝对阈值的方法是许多书上推荐的:
if(fabs(a-b)<0.000001) 但这种使用固定阈值0.000001的方法难以持续有效。因为, 有可能两个较小的本应不相等的数正好相差小于0.000001, 而两个本应看做相等的大数却相差大于0.000001。 Doug Gwyn推荐使用“相对差”比较浮点数:
//表达式值1
//表达式值0 //d=1
f=a>b>c //f=0
整理ppt
4
– 关系运算表达式使用中要注意各步骤的逻辑值:
例 若a=0; x=0.3;b=0.5; 则 a<=x<=b的值为 0
例因值为5>为2a><7=>0x8值在为C中1,是所允以许x的<=,b的值为0 例因为上int式i=运1,算j=步7,骤a; 是左结合 ( (5>2) >7 ) > 8 所以 a5=>i2+>(j7%>48!的=0值); 为0
例 a=4;b=5;
!a
值为0 a=4非0为真,非a即为假
a&&b
值为1
a||b
值为1
!a||b 4&&0||2
值为1 值为1
5>3&&2||8<4-!0 //(5>3)&&2||(8<(4-(!0))) 值为1
'c'&&'d'
值为1
整理ppt
13
短路特性(short-circuit evaluation): 逻辑表达式求解时,并非所有的逻辑运 算符都被执行。在逻辑表达式运算时, 如果已经能够计算出表达式的值,后面 的运算就不进行了。
&& :从左向右 || :从左向右
例 a<=x&&x<=b (a<=&&(x<=b)
a>b&&x>y
(a>b)&&(x>y)
a==b||x==y (a==b)||(x==y)
!a||a>b
(!a)||(a>b)
整理ppt
12
混合运算顺序
!(非) 算术运算符 关系运算符 && || 赋值运算符
(高) (低)
• 逻辑运算符和逻辑表达式
Logical Operators and Expressions
• 条件表达式
Conditional Expressions
• if 语句 • switch 语句
整理ppt
3
关系运算符和以关系运算符组成的关系表达

<
关系运算符
<=
– 种类:< <= >= > == !=
> >=
– 结合方向:自左向右 关系表–达优式先:级以别关:系符连起来的式子
== !=
关系表达式的值:是逻辑值“真”或“假”,
用1和0表示;
优先级6(高) 优先级7(低)
1表示逻辑真,0表示逻辑假(非零为真)
例 int a=3,b=2,c=1,d,f;
a>b
//表达式值1
(a>b)==c b+c<a d=a>b
0
main(){
int a=0,b=1;
1
printf("%d\n",a==b);
printf("%d\n",a=b);
getch();
}
整理ppt
6
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判
相关文档
最新文档