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(逻辑真),则停止后面的||运算,因为 此时可以判断逻辑表达式结果为真。

C程序设计(第四版)教案第四章

C程序设计(第四版)教案第四章

月日第4章选择结构程序设计4.1 选择结构和条件判断举例:在现实生活中,需要进行判断和选择的情况是很多的如果你在家,我去拜访你如果考试不及格,要补考如果遇到红灯,要停车等待周末我们去郊游70岁以上的老年人,入公园免票都需要用到【选择】在现实生活中,需要进行判断和选择的情况是很多的,处理这些问题,关键在于进行条件判断,由于程序处理问题的需要,在大多数程序中都会包含选择结构,需要在进行下一个操作之前先进行条件判断。

C语言有两种选择语句:(1)if语句,实现两个分支的选择结构(2)switch语句,实现多分支的选择结构例4.1 在例3.5的基础上对程序进行改进。

题目要求是求一元二次方程的根。

由键盘输入a,b,c。

假设a,b,c的值任意,并不保证b*b-4ac>0。

需要在程序中进行判别,如果b*b-4ac>0 ,就计算并输出方程的两个实根,否则就输出“方程无实根”的信息。

解题思路:输入a,b,c计算discdisc<0计算x1,x2输出无实根输出x1,x2假真程序#include <stdio.h>#include <math.h>int main ( ){double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;计算b2-4ac,disc的值变为-15if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;pri ntf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2); }return 0;}-15<0为真#include <stdio.h>#include <math.h>int main ( ){double a,b,c,disc,x1,x2,p,q;scanf("%lf%lf%lf",&a,&b,&c);disc=b*b-4*a*c;计算b2-4ac,disc的值变为8if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2); }return 0;}8<0为假p的值变为-1q的值变为0.71x1的值变为-0.29x2的值变为-1.71if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return 0;}选择结构,用if语句实现的if (disc<0)printf(“has not real roots\n”);else{ p=-b/(2.0*a);q=sqrt(disc)/(2.0*a);x1=p+q;x2=p-q;printf(“real roots:\nx1=%7.2f\nx2=%7.2f\n”,x1,x2);}return 0;}4.2 用if语句实现选择结构4.2.1 用if语句处理选择结构举例例4.2 输入两个实数,按代数值由小到大的顺序输出这两个数。

c4、c5选择结构及循环结构程序设计

c4、c5选择结构及循环结构程序设计

switch语句的使用要点
1.switch中的表达式可以是整型或字符型表达式。
2.每个常量表达式的值必须各不相同,否则将会出现矛盾. 3.当表达式的值与case后面的常量表达式值相等时就执行此case 后面的语句. 4.break语句在switch中的作用:强行跳出switch体转到其它某条 语句,每个case后面应有一个break语句(否则程序的执行顺序 将改变),default分支后的break可以省略。 5.各个case出现的先后顺序不影响程序的执行结果.
main() { int i,sum;
i=1; 要点: while (i<=100) · 循环体若不止一条语句时, { sum=sum+i; 应用{…}括起来。 i++;} · 在循环体中应有使循环趋于结束的语 printf(“%d”,sum); 句,以避免“死循环”。 }
do—while语句
1、功能:do—while语句一般完成直到型循环, 2、格式为: do 语句块; while (表达式p); 3、执行过程:先执行循环体,后判定表达式,当表达式的值为 “假”时,循环结束。
条件运算符(?:)
1、含义:在if语句中,表达式为真和假时都执行一条赋值语句并 且都是给同一个变量赋值.这时可以把if语句简化为条 件运算符. 2、一般形式为: 表达式1?表达式2:表达式3;
如: 可以写成: if (a>b) max=a; max=(a>b)?a:b; else max=b; (条件运算符是三目运算符)
(5)各种形式的循环都可以用来处理同一问题,一般情况下它们可 以互相替代。
for语句构成的循环
1、功能:用于循环次数已确定或给定循环条件的情况,适合于 描述一个事物从初始态到终止态的变化过程。最为灵活。 2、语句格式为: for(表达式1;表达式2;表达式3) 循环体; 3、执行过程为: (1)先求解表达式1(初值); (2)求解表达式2,并判定其值是否为真(非0),若为真,则执行其 所包含的语句,然后执行下面的步骤3;若为假,则直接执行步 骤5; (3)执行循环体语句后,求解表达式3; (4) 转回执行步骤2; (5)执行for下面的语句.

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

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

1
关系运算注意:
1. 避免对实数作相等或不等的判断 如 1.0/0.00001*0.00001==1.0;结果为 0 一般而言,对于实型量 a,b作相等或不等的判 断应当用: fabs(a-b)<1e-6 2. 注意区分 = 与 == main(){ int a=0,b=1; printf("%d\n",a==b); printf("%d\n",a=b); getch(); } 0
混合运算顺序
!(非) 算术运算符 关系运算符 && || 赋值运算符 (高)
(低)
例 a=4;b=5; 值为0 a=4非0为真,非a即为假 !a a&&b 值为1 a||b 值为1 !a||b 值为1 值为1 4&&0||2 //(5>3)&&2||(8<(4-(!0))) 值为1 5>3&&2||8<4-!0 'c'&&'d' 值为1
Logical Operators and Expressions
• 条件表达式
Conditional Expressions
• if 语句 • switch 语句
关系运算符和以关系运算符组成的关系表达 式 <
<= > >= – 结合方向:自左向右 == 关系表达式:以关系符连起来的式子 – 优先级别: != 关系表达式的值:是逻辑值“真”或“假”, 用1和0表示; 1表示逻辑真,0表示逻辑假(非零为真)
非0 取expr2值
expr1
=0 取expr3值
expr1?expr2:expr3

C语言程序设计教程:选择结构程序设计

C语言程序设计教程:选择结构程序设计
25
4.2 switch语句
(5) case后面的语句块可以是一条语句或多条语句,也可 是空语句,但不需要用大括号括起来。
(6) 当case后面常量表达式与switch后面的表达式均不匹 配时,则执行default后面的语句块,default可以放在程序的 任何位置,不一定要位于最后。
(7) 多个case可以共用一个语句块。 例如: switch(n)
注意:当多分支中有多个表达式同时满足时,只执行第一个与之匹配的语句块。 因此要注意对多分支中条件表达式的书写次序,防止某些值被过滤掉。
15
4.1.1 if语句的三种形式
思考:若将例4.4中程序改为以下两种写法,结果分别会如何?
程序段一如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=90)
4.1.1 if语句的三种形式
程序段二如下: #include <stdio.h> main() {
float score; printf("请输入学生期末考试成绩(0-100):\n "); scanf("%f", &score); if(score>=60)
printf("及格!\n "); else if(score>=70)
9
4.1.1 if语句的三种形式
2. 双分支选择结构
双分支结构语法的一般格式为:
if(表达式)
{
语句块1;
}

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

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

2021/7/13
2
4.1 条件判断 P89
4.1.1 条件判断的含义 4.1.2 关系运算符和关系表达式 4.1.3 逻辑运算符和逻辑表达式
2021/7/13
3
4.1.1 条件判断的含义 P89
➢在现实生活中,需要进行判断和选择的 情况是很多的
如果你在家,我去拜访你 如果考试不及格,要补考 如果遇到红灯,要停车等待 周末我们去郊游 70岁以上的老年人,入公园免票
内嵌if
2021/7/13
36
4.3 利用switch语句实现 多分支选择结构 P103
➢switch语句的一般形式:
switch(表达式)
{ case 常量表达式1 :语句1
case 常量表达式2 :语句2
┇┇ ┇
不能相同
case 常量表达式n :语句n
default : 语句n+1
}
2021/7/13
可以是:
简单的语句 复合语句 另一个if语句等
2021/7/13
33
4.2.3 if语句的使用说明 P97
例4.3 给出三角形的三个边长,求 三角形的面积。 ➢解题思路: 构成三角形的必要条件是两边之和 大于第三边,因此在计算三角形面 积之前应当进行该条件的判断
2021/7/13
34
P99
4.2.4 使用嵌套的if语句实现多层判断
关系表达式 逻辑表达式
if(a==b && x==y) printf(”a=b,x=y”);
2021/7/13
29
4.2.3 if语句的使用说明 P97
1. if (表达式) 语句 2. if (表达式) 语句1 else 语句2

c4 选择结构程序设计

c4 选择结构程序设计

!
逻辑“非”(NOT)
单目运算符,要求一个操作数, 如:!(a>b)
12 Copyright@ Henan Polytechnic University
C 语 言
4.2 逻辑运算符和表达式
逻辑运算符
种类: ! && 逻辑运算真值表
a 真 真 假 假 b 真 假 真 假
||
!a 假 假 真 真 !b 假 a&&b 真 假 假 假 a||b 真
‘a‟>0 ‘A‟>100
结果为1 结果为0
请问 a>b>c 的值是?
假,表达式的值为0
9 Copyright@ Henan Polytechnic University
C 语 言
关系运算注意:
例 应避免对实数作相等或不等的判断 如 1.0/3.0*3.0==1.0 结果为 1 可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6 例 注意区分“=”与“= =” int a=0,b=1; if(a=b) printf(“a equal to b”); else printf(“a not equal to b”);
If语句及其构成的选择结构 Switch语句及其构成的选择结构 选择结构程序设计举例
4 Copyright@ Henan Polytechnic University
4.2 4.3 4.4 4.5
C 语 言
4.1 关系运算符和表达式
if (5>0) y=1;
第 4 章 选 择 结 构 程 序 设 计
< <=
>
>= == !=
大于
大于或等于 等于 不等于
  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作相等或不等的判
相关文档
最新文档