第5章 逻辑表达与流程控制

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013年7月21日 程序设计基础 第 19 页
3 多分支结构与嵌套的 if 语句和switch语句 多分支结构有多种形式
实现方法:

嵌套的 if 语句
else – if 语句
嵌套的 if - else语句

switch语句
程序设计基础 第 20 页
2013年7月21日
(1)嵌套的 if 语句
if (表达式) 语句1 else 语句2
2013年7月21日 程序设计基础 第 30 页
(2) switch 语 句
switch语句的形式: switch(表达式) { case 常量1: 语句段1 case 常量2: 语句段2 … default: 语句段n }
2013年7月21日 程序设计基础 第 31 页
例 7 在显示器上显示一个菜单程序的模型。
}
2013年7月21日 程序设计基础 第 28 页
方法二: if嵌套结构来实现
main( ) { float score; scanf(″%f″, &score); if(score >= 80) if(score>=90) printf(″Very Good\n″); else printf(″Good\n″); else if(score>=60) printf(″Pass\n″); else printf(″Fail\n″); }
5.2 逻辑运算
x<=1 关系运算 -1 <= x <= 1
0
-1
1
x
x >= -1 并且 x <= 1
x >= -1 && x <= 1
2013年7月21日 程序设计基础 第4页
3种逻辑运算符
逻辑与 && 逻辑或 || 逻辑非 ! X && Y X || Y
X
Y
X
Y
!X
2013年7月21日 程序设计基础
2013年7月21日
程序设计基础
第8页
条件的表示
例1 写出满足下列条件的C表达式。 ch 是空格或者回车。 ch == ' ' || ch == '\n' number是偶数。 number % 2 == 0 year 是闰年,即 year 能被 4 整除但不能被 100 整除, 或 year 能被 400 整除。 (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
2013年7月21日 程序设计基础 第 15 页
方法二: 用if~else语句实现:
main( ) { float score; scanf(″%f″, &score); if(score<60.0) printf(″score=%5.1f---Fail\n″, score); else printf(″score=%5.1f---Pass\n″, score); }
X
第5页
逻辑运算符的含义
逻辑与 && (x>1)&&(y>1) 逻辑或 || (x>1)||(y>1) 逻辑非 ! (x>1)
!(x>1) 即 x<=1
2013年7月21日
程序设计基础
第6页
逻辑运算符的功能
逻辑与 && 逻辑或 || 逻辑非 !
a 假 假 真 真
b a&&b 假 假 真 假 假 假 真 真
2013年7月21日 程序设计基础 第2页
运用关系表达式
表示比较的数学式 C关系表达式 x <= 10 x≤10 x >= 10 x≥10 x≠10 x != 10 x = 10 x == 10 用关系表达式描述条件 判断 x 是否为负数 x<0 判断 x 是否不为零 x != 0
2013年7月21日 程序设计基础 第3页
a||b 假 真 真 真
!a 真 真 假 假
2013年7月21日
程序设计基础
第7页
逻辑表达式
逻辑表达式:用逻辑运算符将逻辑运算对 象连接起来的式子。 (ch >= 'a') && (ch <= 'z') 判断ch 是否为小写英文字母 (ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z') 判断ch 是否为英文字母
2013年7月21日 程序设计基础 第 16 页
条件运算符的使用
当if~else结构中的语句是表达式语句时, 就可以使用条件运算符实现: if(表达式1) 表达式2; else 表达式3; 用条件运算符表示: 表达式1? 表达式2: 表达式3
2013年7月21日
程序设计基础
第 17 页
2013年7月21日
程序设计基础
第9页
5.3 选择控制结构if语句
1 if语句的简单形式
if(表达式)语句
表达式 语 句 真 下一语句 假(0)
真(非0) 表达式 假
语句
2013年7月21日
(a) 程序设计基础
(b)
第 10 页
例 2 打印出不及格的成绩
2013年7月21日
程序设计基础
第 11 页
ch=getche( ); switch(ch)
2013年7月21日 程序设计基础 第 32 页
{ case ′1′: printf(″输入记录\n″); dummy( ); break; case ′2′: printf(″记录列表\n″);
dummy( ); break;
case ′3′: printf(″删除记录\n″); dummy( ); break;
2013年7月21日
程序设计基础
第 27 页
方法一:else if结构来实现
main( )
{ float score;
scanf(″%f″, &score);
if(score>=90) printf(″Very Good\n″); else if (score>=80) printf(″Good\n″); else if(score>=60) printf(″Pass\n″); else printf(″Fail\n″);
第 23 页
2种嵌套if语句的比较
真 真

if (x < 1) y = x + 1; else if (x < 2) y = x + 2; else y = x + 3;

x<2

x<1
y=x+3 假
x<1
真 真
y=x+1
y=x+2
x<2
y=x+1
y=x+2
y=x+3
if (x < 2) if (x < 1) y = x + 1; else y = x + 2; else y = x + 3;
if 语句 if 语句
o else – if 语句
o 嵌套的 if - else语句
2013年7月21日 程序设计基础 第 21 页
表达式 1 真
假 假 表达式 2 真
if (表达式1) 语句1 else if(表达式2) 语句2 …… else if(表达式n-1)语句n-1 else 语句n

2013年7月21日
程序设计基础
第 29 页
分析改写成以下形式:
main( ) { float score; scanf(″%f″, &score); if (score<60) printf(″Fail\n″); else if(score>=60) printf(″Pass\n″); else if(score>=80) printf(″Good\n″); else printf(″Very Good\n″); }
例3 输入一个整数,输出它的绝对值
分析: 当number < 0时,number = -number; 当number >= 0时,?
2013年7月21日
程序设计基础
第 12 页
#include <stdio.h> int main(void) { int number; printf("Enter a number: "); 运行结果: scanf("%d", &number); Enter a number: 10 if(number < 0) The absolute value is 10. {number = -number; } printf("The absolute value is %d.\n", number); return 0; 运行结果: } Enter a number: -300
#include <conio.h> main( )
{ void dummy( );
char ch; printf(″1. 输入记录\n″);
printf(″2. 记录列表\n″);
printf(″3. 删除记录\n″); printf(″4. 修改记录\n″);
printf(″请输入选择: \n″);
if(表达式1) if(表达式2) 语句1 else 语句2 else if(表达式3) 语句3 else 语句4
分段计算水费
例 分段计算水费(要求使用嵌套的if-else语句)
0 x0 4x y f ( x) 0 x 15 3 x 15 2.5 x 10.5
else 和 if 的匹配
if(表达式1) if(表达式2) 语句1 else if(表达式3) 语句3 else 语句4 else 与最靠近它的、没有与别的 else 匹配过的 if 匹配 if(表达式1) if(表达式2) 语句1 else if(表达式3) 语句3 else 语句4
2013年7月21日 程序设计基础 第 25 页
解 我们可以使用两种方法编程: 方法一: 用两个简单的if语句实现: main( ) { float score; scanf(″%f″, &score); if(score<60.0) printf(″score=%5.1f---Fail\n″, score); if(score>=60.0) printf(″score=%5.1f---Pass\n″, score); }
如下列语句段:
x=10;
if(x>9) y=100; else y=200;
用条件运算符改写程序段: x=10; y=x>9? 100: 200;
2013年7月21日 程序设计基础 第 18 页
例5
输入x的值, 当x>0时调用sqrt(x),否
则调用fabs(x)。
#include<stdio.h> #include <math.h> main( ) { float x, y; scanf(″%f″, &x); y=x>0? sqrt(x): fabs(x); printf(″x=%f, y=%f\n″, x, y); }
第5章 逻辑表达与流程控制(1)
0
本章学习要点
关系运算 逻辑运算 if语句及if语句的嵌套 switch语句
2013年7月21日
程序设计基础
第1页
5.1 关系运算
x <= 15 比较 x 和 15 的大小 比较的结果: 真 假 当 x 取值9.5时, x <= 15的结果是:? 当 x 取值21.3时, x <= 15的结果是:? 关系运算符 x < y x <= y x == y 区分= 和== x > y x >= y x != y 关系表达式: 用关系运算符将2个表达式连接起来的式子。 如:x <= 1

表达式n-1

语句1 语句2 语句n-1 语句n
嵌套的 if – else 语句
if(表达式1) if(表达式2) 语句1 else 语句2 else if(表达式3) 语句3 else 语句4 真

表达式 2
假ຫໍສະໝຸດ Baidu
表达式 1
假 真 表达式 3 假
语句1
语句2
语句3
语句4
2013年7月21日
程序设计基础
The absolute value is 300.
2013年7月21日 程序设计基础 第 13 页
2. if~else结构
if(表达式) 语句1 else 语句2
真 表达式 假 表达式
语句1
语句2


语句1 下一语句 (a) (b)
语句2
2013年7月21日
程序设计基础
第 14 页
例 4 打印成绩≥60分为“Pass”, 否则为 “Fail”。
2013年7月21日
程序设计基础
第 26 页
例 6 设计下面的程序
输 入 一 个 学 生 成 绩 , 当 成 绩 ≥ 90 时 , 打 印 “ Very Good” ; 当 80≤ 成 绩 < 90 时 , 打 印 “Good”; 当60≤成绩<80时,打印“Pass”;当 成绩<60分,打印“Fail”。
相关文档
最新文档