C4选择结构程序设计解析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

优先级次序: ! (逻辑非)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); }
表4.3 逻辑运算符的运算规则
2018/10/15 16:48:14
长江大学计算机科学学院
7
用逻辑表达式来表示多个条件的组合
如:求一元二次方程根时,用到下列条件 (a!=0) && (b*b-4*a*c>0)
数学表达式 0<x<10表示x的值应该在0到10的范围内。 但在C语言中不能用关系表达式0<x<10来简单表述以上的 数学关系。因为无论x是什么值,按照C语言的运算规则, 左边的表达式0<x的运算结果只能为0或1,因而表达式 0<x<10的运算结果总是1。 只有用逻辑表达式0<x && x<l0才能正确地表述以上数学 关系。
2018/10/15 16:48:14 长江大学计算机科学学院 10
4.2 if语句
if语句可以根据给定的条件进行判断,决定执行 某个分支程序段,以实现选择结构的程序设计。
1. if语句的一般形式 (1)单分支if语句
if(表达式) 语句
表达式常为关系表达式或 逻辑表达式,也可以是任 何类型的C表达式 语句也称为内嵌语句,可 以是一条语句,也可以 是复合语句
2018/10/15 16:48:14
长江大学计算机科学学院
18
if语句的嵌套
在运用嵌套的if语句时,应该特别注意 else和if的配套规则。 else总是与在它前面的、离它最近的、 尚未与其它else匹配的if相配对。
2018/10/15 16:48:14
长江大学计算机科学学院
19
if语句的嵌套
关系运算和逻辑运算的运算结果都是一个逻辑 值,即逻辑“真”和“假”。 “真”表示条件成 立, “假”表示条件不成立。
2018/10/15 16:48:14 长江大学计算机科学学院 2
4.1.1
逻辑值及其在C语 运算结果: “真”用1表示, “假”用0表示。 因此逻辑值也可以作为一个整数参与算术运算。 参与运算:零代表“假”,非零代表“真”。
注:该题还可以用更加简明的程序来实现。
2018/10/15 16:48:14 长江大学计算机科学学院 21
4.3 条件运算符和条件表达式
条件运算符: ? : (C语言中唯一的三目运算符) 条件表达式的一般形式为: 表达式1?表达式2:表达式3 求解过程: 先求“表达式1”的值,当“表达式1”的值为非零 时,以“表达式2”的值作为整个条件表达式的值; 当“表达式1”的值为零时,以“表达式3”的值作为 整个条件表达式的值。
长江大学计算机科学学院
16
例4.3 编写程序,根据输入的学生成绩,给出相应的等 级。90分以上的等级为A,60分以下的等级为E,其余每 10分为一个等级。 #include <stdio.h> void main( ) 程序运行情况如下: { Enter g:78<CR> int g; g=78:C printf(" Enter g:"); scanf(" %d " , &g); printf(" g=%d: " , g); if(g>=90) printf(" A\n "); else if(g>=80) printf(" B\n "); else if(g>=70) printf(" C\n "); else if(g>=60) printf(" D\n "); else printf(" E\n "); }
2018/10/15 16:48:14 长江大学计算机科学学院 15
(3) 多分支if语句
if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 else if(表达式4) 语句4 ... else if(表达式n) 语句n else 语句n+1
2018/10/15 16:48:14
2018/10/15 16:48:14 长江大学计算机科学学院 17
2. if语句的嵌套
if语句中的内嵌语句可以是任意合法的C语句, 当然也可以是另外一个if语句,这时称为if语句的嵌 套。 if( ) if() if() if() if() if( ) 语句1 语句1 if() if() {if() else 语句2 else else else } else if() else else if( ) 语句3 else 语句2 语句2 else 语句4
如:假定x的值为3,则表达式: 5+(x>0)的值为6 (算术运算) 5 && x>0的值为1 (逻辑运算)
2018/10/15 16:48:14 长江大学计算机科学学院 3
4.1.2 关系运算符与关系表达式
1.关系运算符及其优先级
表4.1关系运算符及其优先级 由两个字符组合而成的运 算符之间不能有空格,如: <=、 >= 、==、!= 。 优先级次序: 算术运算符13/12 关系运算符10 (<、<=、>、>=) 关系运算符9 (==、!=) 赋值运算符 2
4
10
9
2018/10/15 16:48:14
长江大学计算机科学学院
2.关系表达式
用关系运算符将两个操作数(常量、变量或表达式)连接 起来,进行关系运算的式子,称为关系表达式。 例如,假设n1=5,n2=8,n3=10,则: (1)关系表达式n1==n2的值为0。 (2)关系表达式n1<=n3的值为1。 (3)关系表达式n1+n2>n3的值为1。 (4)关系表达式n1== n2>n3的值等为0。 注意:由于存在存储误差和转换误差,避免直接用关系 运算符“==”来判断两个实型数是否相等。 单精度实数:fabs(x-y)<0.000001 双精度实数:fabs(a-b)<1e-14
2018/10/15 16:48:14
长江大学计算机科学学院
12
4.2 if语句
(2)双分支 if语句
if(表达式) 语句1 [else 语句2]
else不能单独使 用(可选)
2018/10/15 16:48:14
长江大学计算机科学学院
13
例4.1 输入三个整数,求最大值
#include <stdio.h> void main() { int n1, n2, n3, max ; printf("Please input three numbers:"); scanf("%d,%d,%d ",&n1,&n2,&n3); if (n1>n2) /*简化形式*/ max=n1; max=n1; else if (n2>max) max=n2; max=n2; if (n3>max) 程序运行情况如下: max=n3; Please input three numbers:11,22,18<CR> printf("max=%d\n",max); max=22 }
• 基本要求
能够编写简单的选择结构程序,并且能够排除选择结 构程序中的语法错误及较简单的逻辑错误。
2018/10/15 16:48:14 长江大学计算机科学学院 1
4.1
关系运算和逻辑运算
关系运算一般是指简单的条件比较。
如:x大于0
表示为:x>0
逻辑运算一般是指复杂的条件比较(多个简单 条件比较的组合)。 如:x大于0并且y小于等于0 表示为:x>0 && y<=0
if(表达式1) if(表达式2) 语句1 else 语句2
if (表达式1) { if(表达式2) 语句1} else 语句2
用花括号把内层if语句括起来后,使得此内层 if语句在语法上成为一条独立的语句,从而使得 else子句只能与外层的if配对。
2018/10/15 16:48:14 长江大学计算机科学学院 20
2018/10/15 16:48:14
长江大学计算机科学学院
11
例4.1 输入一个数,如果该数大于等于0,则输出 它的平方根,当它小于0,则不做任何处理。
#include <stdio.h> #include <math.h> void main() { double x; scanf(“%lf”,&x); if(x>=0) printf(“%10.6lf\n”,sqrt(x)); /* sqrt为开平方的库函数 */ }
第四章 选择结构程序设计
• 教学目标
掌握逻辑值的概念及逻辑值在C语言中的表示方法; 掌握关系运算符和逻辑运算符的运算规则; 掌握赋值运算、算术运算、关系运算及逻辑运算等 几种常用的运算符之间的优先级次序。 掌握if语句及其嵌套的使用方法; 了解条件运算符的运算规则及其使用方法。 了解用switch语句和break语句构成的多分支结构。
2018/10/15 16:48:14 长江大学计算机科学学院 14
例4.2 输入三个整数,在变量a,b,c中排序
#include <stdio.h> void main() { int a,b,c,t; printf ("input a,b,c:"); scanf ("%d%d%d ", &a, &b, &c); printf ("a=%d,b=%d,c=%d\n",a,b,c); if (a>b) { t=a;a=b;b=t;} 程序运行情况如下: input a, b, c: 62 34 24<CR> if (a>c) { t=a;a=c;c=t;} a=62,b=34,c=24 if (b>c) a=24,b=34,c=62 { t=b;b=c;c=t;} printf ("a=%d,b=%d,c=%d\n",a,b,c); }
2018/10/15 16:48:14
长江大学计算机科学学院
8
逻辑表达式的“非完全求解”法
“非完全求解”法:当求出某个逻辑运算符的左边的运 算量的值就能够明确地确定这个逻辑运算的结果时,就结 束求解过程,直接给出运算结果。例如: (1) a && b && c 若a为“假”,直接求得a&&b及整个表达式的值为“假”; 若a为“真”,b为“假”,a&&b及整个表达式的值为 “假 ”。 只有当a为“真”时,才需要判别b的值;只有当a&&b 的值为“真”时,才需要判别c的值。 (2) a || b || c 若a为“真”,直接求得 a || b及整个表达式的值为“真”; 若a为“假”,b为“真”, a || b及整个表达式的值为 “真”; 只有当a为“假”时,才需要判别 b的值;只有当a||b的 9 2018/10/15 长江大学计算机科学学院 16:48:14 值为“假”时,才需要判别c的值。
相关文档
最新文档