第四章 选择结构
C语言-第4章 选择结构程序设计
第4章选择结构程序设计注:选择结构的考点,最重要的有两个,一个是逻辑表达式的值,另一个是分支界限。
弄明白这两个知识点,就能够以不变应万变了。
一、单项选择题1. 在C语言中,能代表逻辑值"真"的是。
A) true B)大于0的数C)非0整数D)非0的数2. 表示关系x<=y<=z的c语言表达式为。
A) (x<=y)&&(y<=z) B) (x<=y)AND(y<=z) C) (x<=y<=z) D) (x<=y)&(y<=z)3. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是。
A) a>=10 or a<=0 B) a>=0|a<=10 C) a>=10 &&a<=0 D) a>=10‖a<=04、判断char型变量c1是否为大写字母的表达式为。
A)’A’<=c1<=’Z’ B)(c1>=’A’) & (c1<=’Z’)C)(’A’<=c1)AND (‘Z’>=c1) D)(c1>=’A’)&& (c1<=’’Z’)5. 有定义char c; c=getchar(); 判断字符变量c为大写字母的正确表达式为。
A) ‘A’=<c<=’Z’ B)c>=‘A’&& c<=’Z C)A=<c<=Z D) c>=A && c<=Z6. 设有语句“int a=4;b=3,c=-2,d=2;”,则逻辑表达式“a>0&&b&&c<0&&d>0”的值是。
A)1B)0 C)-1 D)出错7. 设a为整型变量,则不能正确表达数学关系10<a<15的C语言表达式是。
第4章 选择结构程序设计《C语言程序设计(第三版)》-电子教案
【注意】
switch后跟的"表达式"允许为任何类型的表达式,其 后跟的"表达式"允许为任何类型的表达式, 后跟的 数据类型和case后面的常量表达式的数据类型一致. 后面的常量表达式的数据类型一致. 数据类型和 后面的常量表达式的数据类型一致 每一个case后的各常量表达式的值不允许重复,否则 后的各常量表达式的值不允许重复, 每一个 后的各常量表达式的值不允许重复 会报错. 会报错. 每一个case后允许有多条语句 可以不用花括号" 后允许有多条语句, 每一个case后允许有多条语句,可以不用花括号"{}" 括起来. 括起来. case和default子句出现的先后顺序可以变动,不会影 子句出现的先后顺序可以变动, 和 子句出现的先后顺序可以变动 响程序的执行结果. 子句也可以省略不用. 响程序的执行结果.default子句也可以省略不用. 子句也可以省略不用 多个case可以共用一组执行语句.例如: 可以共用一组执行语句. 多个 可以共用一组执行语句 例如: … case 'A': case 'B': case 'C':printf("Pass\n");break;
3<5 || ++b
【例4-2】测试短路现象 】
#include <stdio.h> void main() { int a,b; a=b=0; a || ++b; printf("%d,%d\n",a,b); a=b=1; a || ++b; printf("%d,%d\n",a,b); a=b=0; a && ++b; printf("%d,%d\n",a,b); a=b=1; a && ++b; printf("%d,%d\n",a,b); }
C语言 第4章 选择结构程序设计
#include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&a,&b,&c); if(a>b) 如果 a>b,将a和b对换 , 和 对换 是 、 中的小者 { t=a; a=b; b=t; } a是a、b中的小者 if(a>c) { t=a; a=c; c=t; } if(b>c) { t=b; b=c; c=t; } printf("%5.2f,%5.2f,%5.2f\n",a,b,c); return 0; }
if (disc<0) 8<0为假 为假 printf(“has not real roots\n”); else 的值变为-1 的值变为 { p=-b/(2.0*a); p的值变为 的值变为0.71 的值变为 q=sqrt(disc)/(2.0*a); q的值变为 x1=p+q; x1的值变为 的值变为-0.29 的值变为 x2=p-q; x2的值变为 的值变为-1.71 的值变为 printf(“real roots:\nx1=%7.2f\n x2=%7.2f\n”,x1,x2); } return 0; }
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\n x2=%7.2f\n”,x1,x2); } return 0; 复合语句 }
C语言有两种选择语句: 语言有两种选择语句: 语言有两种选择语句 (1)if语句,实现两个分支的选择结构 语句, 语句 (2)switch语句,实现多分支的选择结构 语句, 语句
VB6教程第4章选择结构
VB6教程第4章选择结构在编程中,选择结构是一种非常重要的结构。
它允许根据条件的不同来决定程序的执行路径,从而实现不同的操作。
VB6提供了几种选择结构,包括If语句、Select Case语句和条件运算符。
1.If语句If语句是最基本的选择结构之一,它允许根据一些条件来选择不同的代码块执行。
语法如下:If condition Then' code blockElseIf condition Then' code blockElse' code blockEnd If其中,condition是一个表达式,根据其真假来确定执行哪个代码块。
如果第一个条件为真,则执行第一个代码块;如果第一个条件为假而第二个条件为真,则执行第二个代码块;如果所有条件都为假,则执行最后的代码块。
2. Select Case语句Select Case语句是另一种常用的选择结构,它可以根据一个表达式的值来选择不同的代码块执行。
语法如下:Select Case expressionCase value1' code blockCase value2' code blockCase Else' code blockEnd Select其中,expression是要评估的表达式,根据其值来决定执行哪个代码块。
每个Case后面是一个值或一组值,表达式的值匹配任何一个Case 后面的值时,执行对应的代码块;如果没有匹配的值,执行Case Else后面的代码块。
3.条件运算符条件运算符是一种简洁的选择结构,它可以将多个条件合并在一个表达式中,根据不同的结果执行不同的操作。
条件运算符有三种形式,分别是If-Then-Else、If-Then和If-Then-ElseIf-Then。
语法如下:If condition1 Then result1 Else result2If condition Then resultIf condition1 Then result1 ElseIf condition2 Then result2 Else result3其中,condition是一个表达式,根据其真假来决定执行哪个结果。
C语言程序设计第4章 选择结构程序设计-2018
(x<0&&y<0&&z>=0)|| (x>=0&&y<0&&z<0)|| (x<0&&y>=0&&z<0)
(2) x和y中至少有一个小于z。
设x、y、z均为int型变量,则对应表达式为: (x<z)||(y<z)
注意
– 可等价于一条语句 – 可以嵌套使用
• 格式
{ <语句序列> { <语句序列> } <语句序列>
}
4.3.2 复合语句
• 【例4-2】迪士尼门票规定65周岁及以上的老 年人,平日票价为280元,高峰日票价为375元。
– 语句1为内嵌语句,只允许是一条语句,可以是简单的语句、复合 语句或者另一个if语句等
• 执行过程
– 先求解表达式
– 如果表达式的值为“真”,则执行语句1
– 否则,如果表达式的值为“假”,则什么都不做
4.3.2 复合语句
• 复合语句
– 用一对大括号将一组语句序列括起来,通常可以出现在允 许单条语句出现的地方
第4章 选择结构程序设计
目录
4.1 门票价格问题 4.2 条件的表示 4.3 单分支结构 4.4 双分支结构 4.5 多分支结构 4.6 综合案例 练习 4
问题
– 如果今天下雨,我就不去植物园 – 鱼与熊掌不可兼得 – 同样一件衣服,京东、天猫、唯品会、
官网、实体店都有售,价格、送货时间、 品质保障、优惠方式等各不同,到底选 择买哪一家的呢 – 复杂决策问题
C程序设计(第五版)-第4章选择结构程序设计课后习题答案
C程序设计(第五版)-第4章选择结构程序设计课后习题答案1. 什么是算术运算?什么是关系运算?什么是逻辑运算?【答案解析】算熟运算:算术运算即“四则运算”,是加法、减法、乘法、除法、乘⽅、开⽅等⼏种运算的统称。
其中加减为⼀级运算,乘除为⼆级运算,乘⽅、开⽅为三级运算。
在⼀道算式中,如果有多级运算存在,则应先进⾏⾼级运算,再进⾏低⼀级的运算。
C语⾔中的算熟运算符包括:+、-、*、/、++、--、%等种类。
如果只存在同级运算;则从左⾄右的顺序进⾏;如果算式中有括号,则应先算括号⾥边,再按上述规则进⾏计算。
⽰例:$ (1 + 1)^{2} * 4+5 * 3$解析:1. 先进⾏括号内运算1+1,然后进⾏乘⽅运算得到结果4.2. 接下来与4相乘,得到结果163. 因为乘法优先级⼤于加法,因此先进⾏5*3,得到结果154. 最终相加得到结果31结果:31关系运算:关系的基本运算有两类:⼀类是传统的集合运算(并、差、交等),另⼀类是专门的关系运算(选择、投影、连接、除法、外连接等),⽽在C语⾔中,关系运算通常被认为是⽐较运算,将两个数值进⾏⽐较,判断⽐较结果是否符合给定的条件。
常见的关系运算符包括:<、<=、>、>=、==、!=等种类。
其中,前4种关系运算符(<、<=、>、>= )的优先级别相同,后2种(==、!=)也相同。
⽽前4种⾼于后2种。
例如, >优先于==。
⽽>与<优先级相同。
并且,关系运算符的优先级低于算术运算符,关系运算符的优先级⾼于赋值运算符(=)。
逻辑运算:在逻辑代数中,有与、或、⾮三种基本逻辑运算。
表⽰逻辑运算的⽅法有多种,如语句描述、逻辑代数式、真值表、卡诺图等。
⽽在C语⾔中,逻辑运算通常⽤于使⽤逻辑运算符将关系表达式或其它逻辑量连接起来组成逻辑表达式⽤来测试真假值。
常见的逻辑运算符包括:&&、||、!等种类&&:与是双⽬运算符,要求有两个运算对象,表⽰两个运算对象都成⽴,则结果为真,否则结果为假。
C语言第4章选择结构
第四章选择结构选择:1.以下关于运算符优先级的描述中,正确的是()。
A)!(逻辑非)>算术运算>关系运算>&&(逻辑与)>||(逻辑或)>赋值运算B)&&(逻辑与)>算术运算>关系运算>赋值运算C)关系运算>算术运算>&&(逻辑与)>||(逻辑或)>赋值运算D)赋值运算>算术运算>关系运算>&&(逻辑与)>||(逻辑或)2.逻辑运算符的运算对象的数据类型()。
A)只能是0或1 B)只能是.T.或.F.C)只能是整型或字符型D)任何类型的数据3.能正确表示x的取值范围在[0,100]和[-10,-5]内的表达式是()。
A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)4.判断字符型变量ch为数字的表达式是( ) 。
A) 0<=ch<=9 B)(ch>=0)&&(ch<=9)C)'0'<=ch<='9' D)(ch>='0')&&(ch<='9')5.若有以下函数关系x<0 → y=2xx>0 → y=xx=0 → y=x+1下面程序段能正确表示以上关系的是()。
C语言全国计算机二级等级考试教程第四章选择结构(章节带习题)
2
a a
2 1
b 1
b
1
4.2 if语句和用if语句构成的选择结构
4.2.1 if语句
C语言的if语言有两种形式: if(表达式) 语句 关键字 不满足 单分支if语句 不含else子句 关键字 if(表达式) 语句1 else 语句2 不满足 双分支if语句 含else子句
表达式 满足 语句
表达式 满足 语句1
表达式2
表达式1
真
假
表达式3
真
假
表达式4
真
语句1 语句2 语句3
假
语句n
真
语句4
4.2 if语句和用if语句构成的选择结构
4.2.2 嵌套的if语句
例4.5 编写程序,根据输入的学生成绩给出相应的等级,大于或等于90分以上 的等级为A,60分以下的等级为E,其余每10分为一个等级。 Enter g:72<CR> 成绩(g)大于等于90分以上(g>=90):A g=72:C 成绩(g)大于等于80分以上(g>=80):B 程序的意思为: 成绩(g)大于等于70分以上(g>=70):C Enter g:55<CR> 成绩(g)大于等于60分以上(g>=60):D g=55:E 成绩(g)不及格(g<60):E #include <stdio.h> 假 g>=90 main() {int g; 真 g>=80 假 printf("Enter g:");scanf("%d",&g) 真 printf("g=%d:",g); g>=70 假 if(g>=90) printf("A\n"); 真 假 g>=60 else if(g>=80) printf("B\n"); else if(g>=70) printf("C\n"); 真 else if(g>=60) printf("D\n"); 输出A 输出B 输出C 输出D 输出E else printf("E\n"); }
C语言程序设计第四章
运行情况: 1989↙ 1989is not a leap year.
2000↙
2000 is a leap year.
C程序设计
第五章
选择结构程序设计
例4.6 求
2 ax bx c 0 方程的解
#include "stdio.h" #include "math.h" main() {float a,b,c,d,disc,x1,x2,realpart,imagpart; scanf("%f,%f,%f",&a,&b,&c); printf("The equation"); if (fabs(a)<=1e-6) printf("is not a quadratic"); else disc=b*b-4*a*c; if(fabs(disc)<=1e-6) printf("has two equal roots:%8.4f\n",-b/(2*a)); else if(disc>1e-6) {x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf("has distinct real roots:%8.4f and %8.4f\n",x1,x2); } else {realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); printf("has complex roots:\n"); printf("%8.4f+%8.4fi\n",realpart,imagpart); printf("%8.4f-%8.4fi\n",realpart,imagpart); } }
c语言 第四章 选择结构课件
if (expr1) if (expr2) statement1 else statement2
内嵌if
if (expr1) if (expr2) statement1
else statement3
内嵌if
if (expr1) statement1
else if(expr3) statement3 else statement4
if ~ else 配对原则:缺省{ }时,else 总是和它上面离它最近的未配对的if配对
if(……) if(……) if(……) else…... else…...
else…...
例: if (a==b) if(b==c) printf("a==b==c");
else printf("a!=b");
if(x>y) printf("X>Y\n");
else printf("X<Y\n");
else printf("X==Y\n");
}
运行:Enter integer x,y:12,23 X<Y Enter integer x,y:12,6 X>Y Enter integer x,y:12,12 X==Y
内嵌if
if (expr1)
if (expr2) else
statement1 statement2
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
main() { int x,y;
printf("Enter integer x,y:"); scanf("%d,%d",&x,&y); if(x!=y)
C语言课件 选择结构程序设计
述
4-3 switch语句和break语句
4.3.1 break语句(辅助控制语句)
break语句的格式:break; break语句不能单独使用,只能与switch和循环语句
结合使用。 功能:在循环语句和switch语句中,终止并跳出循环
体或开关体。
4.3.2 switch语句(开关语句)
格式: switch(表达式) { case E1: 语句组1;break;
C
语 言
关系运算注意:
程
序
例 应避免对实数作相等或不等的判断,而只能
设
使用“<”和“>”,原因在于舍入误差可能造
计
成
两个逻辑上应该相等的数不相等。
如 1.0/3.0*3.0==1.0
可改写为:fabs(1.0/3.0*3.0-1.0)<1e-6
例 注意区分“=”与“==”
第 二 章 数 据 描 述
1表示“真”,
描
述
C
语 言
优先级与结合方向:
程
序
设 计
!
高
&& 低
||
! :从右向左
第
二
&& :从左向右
章
数
据
|| :从左向右
描
述
高
!(非) 算术运算符 关系运算符 &&和|| 赋值运算符=
低
C
语
言
程
逻辑表达式的值:
序
设
计
例 a=4;b=5;
!a
值为0
a&&b
值为1
a||b
值为1
!a||b
值为1
第四章 选择(分支)结构程序设计
用一个逻辑表达式来表示一个复杂的条件。
例如:判断某一年是否闰年。 闰年:能被4整除,但不能被100整除;或能被 400整除。
(year%4==0&&year%100!=0)||year%400==0
表达式为“真”,闰年条件成立,是闰年,否则 非 闰年。
复合语句的形式:
{ 语句1; 语句2; 语句3; ……
}
4.3 if语句
4.3.1 if语句三种形式
复合语句在选择结构,循环结构中经常用到。 我们在逻辑上把复合语句看成是一条语句。
4.3 if语句
4.3.1 if语句三种形式
例:要求用户输入一个实数,然后求出这个实数 的绝对值。
4.3 if语句
逻辑运算的真值表:
a b a&&b
a||b
真真 真
真
真假 假
真
假真 假
真
假假 假
假
a
!a
真
假
假
真
4.2 逻辑运算符和逻辑表达式
4.2.1 逻辑运算符及其优先顺序
例:逻辑运算举例 a&&b 若a、b为真,则a&&b为真。 a||b 若a、b之一为真,则a||b为真。 !a 若a为真,则!a为假,反之若a为假,
4.3.1 if语句三种形式
▪ 在C语言中,表达式P的值是非0时,系统均按真 值处理。
例(1) if (‘a’) printf(“ok!”); (2) x=-5; if(x) printf(“ok!”); (3) y=0; if(y==0) printf(“ok!”); if(y) printf(“ok!”);
4.选择结构
2、if (表达式) 语句1 else 语句2 例如: if (x>y) printf(“%d”, x); else printf(“%d”, y);
例 输入三角形边长,求面积
#include <math.h> #include <stdio.h> main() { double a,b,c,s,area; scanf("%lf,%lf,%lf",&a,&b,&c); s= (a+b+c) /2.0; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\narea=%7.2f\n",a,b,c,area); } 输入:9.89,12.65,8.76 输出:a= 9.89, b= 12.65, c= area= 43.17
内嵌if
if (expr1) if (expr2) else else if(expr3) else
statement1 statement2 内嵌if statement3 内嵌if statement4
说明: if ~ else 配对原则:缺省{ }时,else总是和它上面 离它最近的未配对的if配对 if(……) if(……) if(……) else…... else…... else…...
(if语句)练习题
2.以下程序的输出结果是( C )
#include “stdio.h” void main() {int a=2,b=-1,c=2; if(a<b) if(b<0) c=0; else c++; printf(“%d\n”,c); } (A) 0 (B) 1 (C) 2 (D) 3
选择结构课件
N 语句2
在if和else后面可以有多个操作语句,则if语句 的形式变成: if (表达式) {语句序列1} else {语句序列2}
教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
if语句的其他形式
当语句2为空时, else可以省 略,if语句的形式变换为: if (条件) 语句 任务2:由键盘输入x、y两个数,要求从大到小排序并输出。 分析: 关键技术:两个变量互换的算法是:t=x;x=y;y=t; 定义x、y、t用于存放输入的两个数和中间变量; 输入x、y if(x<y) {t=x;x=y;y=t;} 输出x、y
引例
计算函数值
sin( x) y x 1
需考虑:① 输入x ② 判断x值
x0 x0
③ 根据x值,计算y值
④ 输出y值 显然②③顺序程序不能够实现,须引入选择结构程序。
教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
引例:计算函数值
sin( x) y x 1 x0 x0
通过这几个例子,我们可以发现,计算机编程的核心是算法,算法通用于各种语 言。算法可以通过不同的编程语言来实现。 教育改变命运,励志改变人生。
第四章 选择结构程序设计—if语句
任务3: 任给a、b、c三个数,按从大到小的顺序输出。
分析: 1)对于任意两个数a,b:若a>b, 则输出a,b,否则交换a和b 2)对于三个数,有6种可能: a>b>c a>c>b b>a>c b>c>a c>a>b c>b>a 3) 使用判断-交换法: ① 若a<b,则交换a和b ② 若a<c,则交换a和c 结果a最大 ③ 若b<c,则交换b和c 结果a>b>c 交换方法: 设a=5,b=8 a=b;b=a; 结果a=8,b=8(错误)
第4章 C语言选择结构程序设计
《 C语言程序设计》
流程图
真 (非0) 表达式
假(0)
语句1
语句2
《 C语言程序设计》
例4.1
【例4.1】试用if…else语句编写程序,判断学生成绩 是否合格。
判断方法: ①如果成绩大于等于60,输出及格 ②否则输出成绩不及格
《 C语言程序设计》
4.2 if语句 if语句
C语言中if条件语句有三种结构形式,分别是: if结构(单分支结构) if if-else if-else结构(双分支结构) if-else-if结构 (多分支结构) if-else-if
《 C语言程序设计》
例4.5 设计一个应用程序,判断某一年是否为闰年
判断方法: ①如果该年能被4整除而不能被100整除,则为闰年; ②或者能被400整除也是闰年。 如: 1996年、2000年是闰年 1996年 2000年是闰年
1998年 1900年不是闰年 1998年、1900年不是闰年
逻辑表达式为: year%4==0 && year%100!=0 || year%400==0
4.4 条件运算符和条件表达式
条件运算符: 1、条件运算符:?:是C语言中惟一的一个三 目运算符。 一般形式为: 2、一般形式为: 表达式1 ? 表达式2 : 表达式3 3、操作过程:如果表达式1成立,则表达式2的 操作过程: 值就是此条件表达式的值;否则,表达式3 的值是此条件表达式的值。
《 C语言程序设计》
《 C语言程序设计》
4.2.2 if-else结构 if-else结构
1、格式: if(条件表达式 语句1 条件表达式) if(条件表达式) 语句1; 真 (非0) else 语句2; 语句 ; 语句1 2、执行过程:
C语言程序设计:第4章 顺序结构与选择结构
printf("max: %d\n",b); return 0; }
#include <stdio.h> int main(void) {
int a ,b,max; printf("请输入a和b的值\n"); scanf("%d%d",&a,&b); max = a; if(max < b)
7
顺序结构:复合语句
复合语句:由大括号{}中的0个或多个声明和语句列表共同构成。
#include <stdio.h> int main(void) {
int a = 10; int b = 11;
注意: 1>复合语句不以分号;作为结束符, 即最后的}后面不加分号。 2>在复合语句中可以定义变量,但
if(score >= 60)
printf("及格\n");
else
printf("不及格\n");
return 0;
}
19
选择结构: if...else if语句
成绩等级划分: 输入自己的成绩,根据成绩的范围输出成绩等级。
成绩范围
等级
90--100
A
80--89
B
70--79
C
60--69
D
0--59
3.输入一个字符,如果是大写字母改变为小写字母;如果是小写字 母,则把它变为大写字母;若是其他字符则不变
4.输入数字1-7,并输出显示对应的星期 (输入的数字 1 ,输出星期一,以此类推)
最新课件-C语言程序设计教学第四章选择结构 推荐
运行情况如下:
3.6, –3.2 –3.20, 3.60
形式2: if(表达式)语句A else 语句B
功能: 表达式为非0,执行语句A 表达式为0,执行语句B
!=0 语句A
=0 表达式
语句B
例: if(x>y) printf("%d", x);
else printf(" %d", y);
❖例子1: 输入两个数,分别赋给x和y,输出其 中一个最大的数。 #include<stdio.h> main() {
语句A
例如: if (x>y) printf(" %d", x)
例子: 输入两个实数,按代数值由小到大次序输出这两个数。
#include<stdio.h> main() {
float a, b, t; scanf("%f, %f", &a, &b); if (a>b) {t=a; a=b; b=t;} printf("%5.2f, %5.2f\n", a, b); }
int x,y; scanf("%d%d",&x,&y); if(x>y)
printf("max=x=%d\n",x); else
printf("max=y=%d\n",y) ; }
例子2:从键盘输入一个数,判断它是否能被7整 除。若能被7整除,打印YES,否则打印NO。 #include<stdio.h> main() {
➢或者:
当(year%4!=0) ¦¦(year%100= =0&& year%400!=0) 为1时, year为非闰年。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系表达式的值是“真”和“假”,用“1”和“0”表示。
§4.3 逻辑运算符和逻辑表达式(P129)
一、逻辑运算符及运算规则
逻辑运算符C语言中提供了三种逻辑运算符 :
&& 与运算
|| 或运算
! 非运算
与运算符&&和或运算符||均为双目运算符,具有左结合性。 非运算符!为单目运算符,具有右结合性。
1、与运算&&: 参与运算的两个量都为真时,结果才为真,否则为假。
四、用逻辑表达式描述事件
例如
授予学位的条件:
1、加权平均成绩大于等于75分。 2、通过英语四级考试。 3、毕业论文及格 4、无作弊现象。
写出满足下列条件的C语言表达式:P30 1、Number是偶数。 Number%2==0
2、ch是小写字母
(ch>=‘a’)&&(ch<=‘z’)
ch>=‘a’&&ch<=‘z’ 3、ch是英文字母 (ch>=‘a’&&ch<=‘z’) ||( ch>=‘A’&&ch<=‘Z’)
执行语句。
}
作业: 1、写出下面各逻辑表达式的值。设 a=3,b=4,c=5 (1) a+b>c&&b==c (3) !(a>b)&&!c||1 (5) !(a+b)+c-1&&b+c/2 (2) a||b+c&&b-c (4) !(x=a)&&(y=b)&&0
与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断, 继续执行后面所有case后的语句。 如表达式的值与所有case后的常量 表达式均不相同时,则执行default后的语句。
例如:输出分数段
#include "stdio.h" main()
{char grade;
grade=getchar(); switch(grade)
第四章 选择结构程序设计
§4.1 关系运算与逻辑运算 一、逻辑值 二、关系运算
关系运算:参与运算为算术值,结果取值为逻辑值。 §4.2 关系运算符与关系表达式(P127) 一、关系运算符及其优先级
在C语言中有以下关系运算符:
< 小于
> 大于 == 等于 关系运算符的特点:
<= 小于或等于
>= 大于或等于 != 不等于
注意:
1、switch语句的入口、出口在什么地方?(介绍break语句)
2、在每个case后面可以包括一个以上的执行语句,不必用花 括号括起来。
switch(grade)
3、多个case可以共用一组
{case 'A': Case 'B': case 'C':printf("60---100\n");break; case 'D':printf("<60\n"); break; default :printf("error\n");
这也就是条件表达式嵌套的情形,即其中的表达式3又是一
个条件表达式。
例如:
输入三个数,请输出这三个数中的最大数和最小数。
main()
{int a,b,c,temp,max; printf(" 请输入 a,b,c\n"); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)?a:b; max=(temp>c)?temp:c; printf("最大数为:%d getch();} ",max);
例如: if(表达式1) if(表达式2) 语句1;
else
语句2; 其中的else究竟是与哪一个if配对呢?
应该理解为:
还是应理解为:
if(表达式1) if(表达式2) 语句1; else 语句2;
if(表达式1)
if(表达式2)
语句1;
else 语句2;
为了避免这种二义性,C语言规定,else 总是与它前 面最近的if配对,因此对上述例子应按后一种情况理解。
4、是空格或回车
(ch==‘ ‘)||(ch==‘\n’)
5、year是闰年,即year能被4整除但不能被100整除,
或year能被400整除
(year%4==0&&year%100!=0)||(year%400==0)
§4.3
if 语句
用if语句可以构成分支结构。它根据给定的条件进行判断, 以决定执行某 个分支程序段。 一、if语句有三种基本形式 1、第一种形式为基本形式 if(表达式) 语句;
例如: main() {int a; C语言中如何表示“真”和“假”?
系统如何判别一个量的“真”和“假”?
a=5>3&&2||8<4-!0;
printf("%d\n",a);
getch();}
三、“逻辑与”、“逻辑或”运算化简
a&&b&&c
a||b||c
多个逻辑与,有一个值为假,取值必为假。
多个逻辑或,有一个值为真,取值必为真。
使用条件表达式时,还应注意以下几点: 1、条件运算符?和:是一对运算符,不能分开单独使用。 2、条件运算符的运算优先级低于算术运算符、关系运算
符和逻辑符,但高于赋值符。
因此 max=(a>b)?a:b可以去掉括号而写为 max=a>b?a:b
3、 条件运算符的结合方向是自右至左。
例如: a>b?a:c>d?c:d 应理解为:a>b?a:(c>d?c:d)
§4.5 switch 语句(P53)
C语言还提供了另一种用于多分支选择的switch语句, 其一般形式为: switch(表达式)
{
case 常量表达式1:
case 常量表达式2: …
语句1;
语句2;
case
常量表达式n:
语句n;
语句n+1; }
default : 其语义是:
计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值
a&&b:若a、b都为真,则a&&b为真。 例如,5>0 && 4>2, 由于5>0为真,4>2也为真,
相与的结果也为真。 2、或运算|| 参与运算的两个量只要有一个为真,结果就为真。 两个
量都为假时,结果为假。
a||b:若a、b之一为真,则a||b为真。
例如:5>0||5>8,由于5>0为真,相或的结果也就为真 3、非运算! 参与运算量为真时,结果为假;参与运算量为假时, 结果为真。 !a: 若a为真,则!a为假。 若a为假,则!a为真。
请问下列式中的嵌套关系如何:
if(表达式1) if(表达式2) else if(表达式3) else 语句2; 语句3; 语句1;
If语句嵌套时应注意的问题:
1、最好使得每一条if语句中都包含else语句,这样使if和
else的数目相同。
并且在书写上尽量规范,从内层到外层—对应,不致出差错。 例如: if(表达式1)
例题: 某百货公司为了促销,采用购物大折的优惠方法:每位顾客 一次购物:
在100-200元者,按九折优惠;
在200-300元者,按八折优惠; 在300元以上者,按七折优惠; 编写一段程序,当输入购物款项时,计算并输出优惠的价格。
例如: 乘坐出租汽车,交费的情况如下:起价费10元,4公 里之内10元,4-15公里部分1.2元/公里,15公里以上部分
逻辑运算符的优先级:
!(非)→&&(与) → ||(或)
已学过的运算符优先级的顺序: !,自增、减,类型,地址,算术运算符(*、/、%、+、-),
关系运算符,&&,||,赋值,逗号
二、逻辑表达式: 逻辑表达式的一般形式为: 表达式 逻辑运算符 表达式 逻辑表达式值,以“1”和“0”分别代表“真”和“假”。
1.8元/公里,请编写一个程序,当司机输入乘客乘车的公
里数时,程序将乘客所需交纳的费用显示出来。
三、条件运算符与条件表达式(P132)
如果在条件语句中,只执行单个的赋值语句时, 常可 使用条件表达式来实现。 条件运算符为?和:,它是一个三目运算符,即有三个参与
运算的量。
由条件运算符组成条件表达式的一般形式为: 表达式1? 表达式2: 表达式3
其语义是:如果表达式的值为真,则执行 其后的语句, 否则不执行该语句。其过程可表 示为右图。 表达式:任意表达式或任意类型的数据(常量、变量) 语句:任意语句----if语句的内嵌语句,与if语句为一统 一的整体,一起使用。
(P42) F P T A
main()
{int a,b; scanf("%d,%d",&a,&b); if(a-b) printf("a-b=%d\n",a-b);
例如: 输入两个数,按数值由小到大次序输出这两个数。 例如:
输入三个数,按数值由小到大次序输出这三个数。
例如: 输入三个数,请输出这三个数中的最大数和最小数。
二、if语句的嵌套(P57—P60) 当if语句中又包含一个或多个if语句,则构成了if 语句嵌套的
情形。
其一般形式可表示如下: 或者为: if(表达式)
其求值规则为:
如果表达式1的值为真,则以表达式2 的值作为条件表达 式的值,否则以表达式3的值作为整个条件表达式的值。 条 件表达式通常用于赋值语句之中。 例如条件语句: if(a>b) max=a; 可用条件表达式写为 max=(a>b)?a:b;