当前位置:文档之家› 第五章 选择结构程序设计 (1)

第五章 选择结构程序设计 (1)


(3)注意“==”和“=”的区别。 例: 5>2>7>8在C中是允许的, 值为0 (4)应避免对实数作相等或不等的判断 (5) 字符串之间的比较不允许使用关系运算符 数学概念: |a-b|<ε 例例 : int i=1, j=7,a; •其中,ε为很小的正数,表示 a和b之间的误差。可 int a=i+(j%4!=0); a=0,b=1; 2 则b) a= printf(“a 以根据要求进行调节, ε越小, aequal 和b之间的差就越 if(a= to b”); 例:#include <stdio.h> 例: #include <stdio.h> else printf(“a not equal to b”); 小。 #include <math.h> void main() void main() • 若该式成立,则认为 a与b之间误差不超过ε, { float d=123.45; { float d=123.45; if(123.45==d) printf("1\n"); if(fabs(123.45-d)<1e-5) printf("1\n"); 近似相等; printf("0\n"); else else printf("0\n"); • } 否则认为a和b不相等。 }
• 语句形式: if (表达式) 语句1; else 语句2 ;
语句执行流程: 表达式
假(0) 真(非0) 语句1 语句2
3.多分支if-else-if 语句
if ( score<60) printf(“不及格” ); else if ( score <70) printf(“差”); else if (score <80) printf(“中”); else if (score <90) printf(“良”); else printf(“优”); • 语句形式: if (表达式1) 语句1; else if (表达式2)语句2; …… else if (表达式n)语句n; else 语句n+1;
例: 设整型变量year表示年份,构造一个条件表达式,当 year值为闰年时该条件表达式为“真”,否则为“假”。 分析: 根据数学知识,闰年年份满足的条件为: 1.如果年份能被4整除但不能被100整除,是闰年; 2.年份能被400整除,也是闰年。 所以,判断闰年的条件表达式为下列二者之一: ① year%4==0&&year%100!=0 ② year%400==0 表达式① ②的或运算完整地表示判断闰年的条件: (year%4==0&&year%100!=0)|| year%400==0 等价表示: 或 year%4==0&&year%100!=0|| year%400==0 year%4==0&&year%100|| year%400==0
/*判断x值是否介于1和100之间*/ /*判断x值是否小于1或大于等于100*/ /*判断x和y值是否都大于等于0*/ /*判断三个数是否满足构成三角形的条件*/ /*用于判断变量ch是否为大写字母*/。 x>=1&&x<=100 x<1||x>=100 x>=0&&y>=0 x+y>z&&x+z>y&&y+z>x ch>= 'A '&&ch<=‟Z‟
表达式不成立—逻辑假:0
关系运算符
关系运算符 >
名称 大于
案例
含 义
x>y 若x大于y,结果为真(1);否则结果为假(0) 若x大于等于y,结果为真(1);否则结果为假 (0)
优 先 级 高 优 先 级 低
>= < <= == !=
大于等于 x>=y 小于
x<y 若x小于y,结果为真(1);否则结果为假(0) 若x小于等于y,结果为真(1);否则结果为假 (0)
逻辑运算结果 a&&b a || b 1 1 1 0 !a 0 0 1 1
例:a=4;b=5; 则 短路特性:逻辑表达式求解时,并非所有的逻 !a
辑运算符都被执行,只是在必须执行下一个逻 a&&b 辑运算符才能求出表达式的解时,才执行该运 a||b 算符。
!a||b 4&&0||2 5>3&&2||8<4-!0 例a=0,b=1,c=-2 „c‟&&„d‟
(三) 条件运算符与条件表达式
条件运算符是C语言中唯一的三目运算符。 一般形式为: 表达式1 ? 表达式2 : 表达式3 条件运算符的优先级低于逻辑运算符,高于赋值操作 符,自右向左结合。 功能: 求解 真(非0) 求解 表达式2 表达式 表达式1 假(0)
求解 表达式3
的值
例,求两数中的较大数: max=(x>y?x:y)
选 择 结 构
ቤተ መጻሕፍቲ ባይዱ
第五章 选择结构程序设计(1)
公共计算机教学部
张乐
要设计选择结构程序,要考虑两个方面的问题:

一是在C语言中如何来表示条件。
一般用关系表达式或逻辑表达式

二是在C语言中实现选择结构用什么语句。
用if语句或switch语句
本讲主要内容
一、条件的表示 二、 if 语句
1.单分支if 语句 2.双分支if-else语句 3.多分支if-else-if语句 4.选择结构的嵌套
多分支语句执行流程:
假(0) 表达式1 真(非0) 语句1 假(0) 假(0)
表达式2
语句2
真(非0) 表达式n
真(非0) 语句n 语句n+1
注意
(1) if是关键字只能小写。 if语句中表达式形 式很灵活,可以是常量、变量、任何类型表达式 等。只要表达式的值为非零值,条件就为真,反 之条件为假。 • int a=1;
【例】用“假设思想”法求任意两数中的较大 数。(必记算法)
假设思想:先假设某事物成立或不成立,然后判断事实是否 如此,如果事实和假设条件不符,则对假设进行修正。
二、 if 语句
1.单分支if 语句(The if statement) 2.双分支if-else语句(The if-else statement) 3.多分支if-else-if语句 4.选择结构的嵌套(Nest)
if语句的三种形式: 1.单分支if语句 只判断及格的分数
if (score>= 60) printf(" Pass\n ");

运算符优先级 a<=x && x<=b // (a<=x) && (x<=b) //(a>b)&&(x>y) a>b&&x>y //(a==b)||(x==y) a==b||x==y !a||a>b //(!a)||(a>b)
逻辑表达式的结果: 值为零—逻辑假:0 逻辑值
非零值—逻辑真:1
运算对象 a 非0 非0 0 0 b 非0 0 非0 0 1 0 0 0
判断及格和不及格的分数
2.双分支if语句
if (score>= 60) printf("Pass\n"); else printf("Fail\n");
3.多分支if语句
判断优 良 中 差 不及格
if ( score<60) printf(“不及格” ); else if ( score <70) printf(“差”); else if (score <80) printf(“中”); else if (score <90) printf(“良”); else printf(“优”);
1.单分支if语句
if (score>= 60) print(" Pass\n ");
• 语句形式: if (表达式) 语句;
表达式:常用关系表达式和逻辑表达式
语句:单个语句或复合语句 假(0)
表达式
真(非0)
语句执行流程:
语句
2.双分支if语句
if (score>= 60) printf("Pass\n"); else printf("Fail\n");
a && b && c 例 a=1;b=2;c=3;d=4;m=1;n=1; (m=a>b)&&(n=c>d)
注意区分C语言的关系表达式与数学上的比较运
算表达式,并将数学上的比较运算转化为合法的 C关系表达式。
例:判断变量a的值是否在12到30之间。 数学表达式:12<a<30
正确的写法应该是:(12<a)&&(a<30)
一、条件的表示
关系运算符与关系表达式 逻辑运算符和逻辑表达式 条件运算符与表达式
(一)关系运算符与关系表达式
关系运算符:比较两个量的运算符,是双目运算符 由关系运算符将操作数连起来的表达式称为关系表达式。 优先级:算术运算符>关系运算符>赋值运算符 结合性:自左向右(左结合) 关系表达式的结果: 表达式成立—逻辑真:1 逻辑值
1.单分支if语句
【例】将大写字母转换为对应小写字母 。
#include <stdio.h> void main( ) {char ch; printf("请输入一个字符:\n"); ch=getchar( ); printf("输入的原始字符为%c:\n",ch); if(ch>='A'&&ch<='Z') ch=ch+32; printf("转换后的字符为:%c\n",ch); }
相关主题