第4章 选择结构程序设计
合集下载
第四篇选择结构程序设计
以某表达式的值等于0作为条件时可写成对该表达式 取反的形式。
例如,语句:if(x==0) printf(“x=0”);可以简写成:
if(!x) printf(“x=0”);
4.3 if语句
说明: (3)无论是if语句中的语句还是if-else语句中的语
句1、语句2,都可以是任何语句。当它们中的某 一个是有多条语句组成时,必须写成复合语句的 形式。例如,语句:
优先级: 高 算术运算符
< ,<=, >, >=
低
==, !=
赋值运算符
4.2 关系运算与逻辑运算
2.关系表达式
一般形式为:〈表达式〉〈关系运算符〉〈表达式〉
合法的关系表达式:
a>b
a+b<c-d
(a=3)<=(b=5)
‘a’>=‘b’
(a>b)==(b>c)
关系表达式的值:
——逻辑值
“真” “1”表示
else
printf(“n=%d NO\n”,n); }
➢多分支if语句
4.3 if语句
当if-else语句中的语句2是另一条if语句时,就构成了多分支if语句。
语句的一般形式为: 表 达 式
1
if(表达式1) 语句1 真
假 执行过程:
假 表达式2
else if(表达式2) 语句2
真
假
else if(表达式3) 语句3
用N-S流程图表示例4.1的算法 输入weight
成立
weight≤50
不成立
pay=weight*0.35
pay=50*0.35+(weight50)*0.5
04 选择结构程序设计
}
程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:
程序输出举例: Enter two numbers: 2 2 (用户从键盘输入2 2)
num1=2 num2=2 result=1
4.2 逻辑运算符及逻辑表达式
逻辑运算符用于支持基本逻辑运算。三 种逻辑运算符及其意义,如表4.2.1所示。
表4.2.1
逻辑运算符 !
&& ||
名称 逻辑非 逻辑与 逻辑或
下面给出程序清单:
#include <stdio.h> main() { int value,choice;
printf("Convert : \n");
/*输出菜单*/
printf(" 1: decimal to hexadecimal\n");
printf(" 2: hexadecimal to decimal\n");
printf("Enter a decimal value: "); scanf("%d", &value); printf("%d in hexadecimal is %x\n", value,value); } else if(choice==2) { printf("Enter a hexadecimal value: "); scanf("%x", &value); printf("%x in decimal is %d\n",
例4.3.3 用双分支if语句重新编写例4.3.1的 程序。
可以利用一个分支处理变量a为正数的情 况,如令x=a。用另一个分支初处理变量a为 负数的情况,如令x=−a。最后输出结果。下 面给出程序:
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后,条件可以使用如下的 逻辑表达式描述:
作用 小于 小于等于 大于 大于等于 等于 不等于
运算数 双目 双目 双目 双目 双目 双目
结合性 左结合 左结合 左结合 左结合 左结合 左结合
优先级 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后,条件可以使用如下的 逻辑表达式描述:
第四章.选择结构程序设计
2)逻辑运算的值:
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来 表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&& 参与运算的两个量都为真时(非0),结果才为真(值为1),
否则为假(值为0)。 例如:5>0 && 4>2,由于5>0为真,4>2也为真,其结果
也为“真”,表达式的值为1。
(2)或运算|| 参与运算的两个量只要有一个为真(非0),结果就为真(值
为1)。 两个量都为假(值为0)时,结果为假(值为0)。 例如:5>0 || 5>8, 结果也就为真(值为1)。
3)逻辑运算的规则:
(3)非运算! 参与运算量为真(非0)时,结果为假(值为0);参与运
“假”。
C语言中没有逻辑数据型,用 1 表示“真”、0 表示
“假” 。
如: 5>0的值为“真”,即为1。
(a=3)>(b=5)由于3>5不成立,其值为0。
关系表达式是表达式,因此也允许出现嵌套的情况。
如:a>(b>c), a!=(c==d)等。
逻辑运算符和表达式
1.逻辑运算符
C语言中提供了三种逻辑运算符 ! 非运算 && 与运算 || 或运算
语句2
非0 表达式m 0 语句m 语句n
语句n;
if…else if 结构的执行过程
例 如:
void main() { int result;
printf("input your result: "); scanf(“%d”,&result); if (result>=90) printf(“your result is wounderful!\n"); else if(result >=80) printf(" your result is good!\n"); else if(result >=70) printf(" your result is normal!\n"); else if(result >=60) printf(" your result is passed!\n"); else printf(“you’ll take a another test!\n"); }
逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来 表示。
反过来在判断一个量是为“真”还是为“假”时,以“0” 的数值代表“假”,以非“0”的数值代表“真”。
3)逻辑运算的规则:
(1)与运算&& 参与运算的两个量都为真时(非0),结果才为真(值为1),
否则为假(值为0)。 例如:5>0 && 4>2,由于5>0为真,4>2也为真,其结果
也为“真”,表达式的值为1。
(2)或运算|| 参与运算的两个量只要有一个为真(非0),结果就为真(值
为1)。 两个量都为假(值为0)时,结果为假(值为0)。 例如:5>0 || 5>8, 结果也就为真(值为1)。
3)逻辑运算的规则:
(3)非运算! 参与运算量为真(非0)时,结果为假(值为0);参与运
“假”。
C语言中没有逻辑数据型,用 1 表示“真”、0 表示
“假” 。
如: 5>0的值为“真”,即为1。
(a=3)>(b=5)由于3>5不成立,其值为0。
关系表达式是表达式,因此也允许出现嵌套的情况。
如:a>(b>c), a!=(c==d)等。
逻辑运算符和表达式
1.逻辑运算符
C语言中提供了三种逻辑运算符 ! 非运算 && 与运算 || 或运算
语句2
非0 表达式m 0 语句m 语句n
语句n;
if…else if 结构的执行过程
例 如:
void main() { int result;
printf("input your result: "); scanf(“%d”,&result); if (result>=90) printf(“your result is wounderful!\n"); else if(result >=80) printf(" your result is good!\n"); else if(result >=70) printf(" your result is normal!\n"); else if(result >=60) printf(" your result is passed!\n"); else printf(“you’ll take a another test!\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); } }
第4章 选择结构程序设计
Xor
非
与
或
异或
Eqv 相等
Imp 蕴含
T
T
F
T
T
F
T
T
T
F
F
F
T
T
F
F
F
T
T
F
T
T
F
T
F
F
T
F
F
F
T
T
8
⑵ 逻辑表达式
用逻辑运算符连接起来的表达式称为逻辑表达式,逻辑
表达式也称为布尔表达式。
例如:① 一元二次方程有实根的条件:a≠0 且
a2-4ac≥0 写成逻辑表达式为:
a<>0 and a^2-
Else 语句块n+1 存在,则执行语句块n+1
23
其流程见图:
24
【例4.4】输入某位学生的百分制成绩,要求输出成绩的等级:
假设90分以上为A等,80-89分为B等,70-79分为C等,60-69
为D等,60分以下为E等。
Private Sub Form_Click()
Dim Score As Integer
4
说明:
[1]、关系运算的两个操作数一般是相同或相容类型的,常对
两个数值、两个字符串、两个日期型数据进行比较。
⑵、如果两个操作数是数值型,则按其大小比较。
例如: 8=9
结果为False
8>7
结果为False
8>=8
结果为True1
[3]、如果两个操作数是字符型,则按字符的ASCII码值从左
到右逐一比较、即首先比较两个字符串的第1个字符,其
End If 其中:[Else
915145-C语言程序设计-第4章 选择结构程序设计
条目 票务详情 条件表示(关系表达式) age>=65 style==’2’
老年人
票价分类 两日联票
65周岁及以上
选择两日联票
• 常见错误
– 条件表示时,“==” 运算符误写作“=”运算符 – 数值0、1、…、9与数字字符’0’、’1’、…、’9’的混淆
4.2.2 逻辑运算
• • • 逻辑运算符
– 逻辑非(!)、逻辑与(&&)和逻辑或(||)
• 逻辑表达式求值方法
– 在逻辑表达式的求值过程中,按其操作数从左至右的 计算顺序,当某个操作数的值可以确定整个逻辑表达 式的值时,其余的操作数不再计算
4.2.3 短路求值
例如:假如有变量定义为 int x,y,z; 求下列表达式执行后,表达式的值和变量的值
序号
① ② ③ ④ ⑤ ⑥
变量初始值
x=y=z=1; x=2,y=0,z=1; x=y=z=1; x=0,y=1,z=2; x=0,y=1,z=2; x=0,y=1,z=2;
单分支 双分支 多分支 综合决策
– 选择控制结构
• 即根据条件进行判断选择执行相应操作的 问题,也称为分支控制结构 • 一般分为单分支、双分支和多分支三种结 构
• 实现的关键
– 判断条件的合法描述 – 选择操作流程的合理设计
4.1 门票价格问题
表4-1 上海迪士尼主题乐园的门票价格表
平日票
370
4.2 条件的表示
微视频:短路求值示例
4.3 单分支结构
• 问题
– 迪士尼门票规则
• 老年人:65周岁以上 平日票:280元,高峰日票:375元
分析 – 需要对条件(年龄大于等于65)进行判断
如果为真,则享受优惠票价 平日票:280元,高峰日票:375元
老年人
票价分类 两日联票
65周岁及以上
选择两日联票
• 常见错误
– 条件表示时,“==” 运算符误写作“=”运算符 – 数值0、1、…、9与数字字符’0’、’1’、…、’9’的混淆
4.2.2 逻辑运算
• • • 逻辑运算符
– 逻辑非(!)、逻辑与(&&)和逻辑或(||)
• 逻辑表达式求值方法
– 在逻辑表达式的求值过程中,按其操作数从左至右的 计算顺序,当某个操作数的值可以确定整个逻辑表达 式的值时,其余的操作数不再计算
4.2.3 短路求值
例如:假如有变量定义为 int x,y,z; 求下列表达式执行后,表达式的值和变量的值
序号
① ② ③ ④ ⑤ ⑥
变量初始值
x=y=z=1; x=2,y=0,z=1; x=y=z=1; x=0,y=1,z=2; x=0,y=1,z=2; x=0,y=1,z=2;
单分支 双分支 多分支 综合决策
– 选择控制结构
• 即根据条件进行判断选择执行相应操作的 问题,也称为分支控制结构 • 一般分为单分支、双分支和多分支三种结 构
• 实现的关键
– 判断条件的合法描述 – 选择操作流程的合理设计
4.1 门票价格问题
表4-1 上海迪士尼主题乐园的门票价格表
平日票
370
4.2 条件的表示
微视频:短路求值示例
4.3 单分支结构
• 问题
– 迪士尼门票规则
• 老年人:65周岁以上 平日票:280元,高峰日票:375元
分析 – 需要对条件(年龄大于等于65)进行判断
如果为真,则享受优惠票价 平日票:280元,高峰日票:375元
第4章选择结构程序设计
4.1 选择结构和条件判断
C语言有两种选择语句: (1)if语句,实现两个分支的选择结构 (2)switch语句,实现多分支的选择结构
4.1 选择结构和条件判断
例4.1 在例3.5的基础上对程序进行改进。 题目要求是求 ax2 bx c 0 方程的根。
由键盘输入a,b,c。假设a,b,c的值任意, 并不保证 b2 4ac 0。需要在程序中进行 判别,如果 b2 4ac 0 ,就计算并输出方 程的两个实根,否则就输出“方程无实根” 的信息。
在C的逻辑运算中,以“1”代表“真” ,以“0”代表“假”
4.4 逻辑运算符和逻辑表达式
4.4.1 逻辑运算符及其优先次序 4.4.2 逻辑表达式 4.4.3 逻辑型变量
4.4.1 逻辑运算符及其优先次序
3种逻辑运算符:
&&(逻辑与) ||(逻辑或) !(逻辑非)
&&和||是双目(元)运算符 !是一目(元)运算符 逻辑表达式
解题思路:
只需要做一次比较,然后进行一次交换即可 用if语句实现条件判断 关键是怎样实现两个变量值的互换
互换前 A ★
●B
互换后 A ●
★B
4.2.1 用if语句处理选择结构举例
C★
A★
●B
4.2.1 用if语句处理选择结构举例
C★ A ●★ ● B
4.2.1 用if语句处理选择结构举例
解题思路:可以先用伪代码写出算法:
if a>b,a和b对换 (a是a、b中的小者) if a>c,a和c对换 (a是三者中最小者) if b>c,b和c对换 (b是三者中次小者) 顺序输出a,b,c
#include <stdio.h> int main() { float a,b,c,t;
第4章 选择结构程序设计
2. IF语句的嵌套格式ELSEIF 其语法结构为 If〈条件1〉Then [语句列1] ElseIf〈条件2〉Then
[语句列2]
... [Else [其他语句列]] End If
【例4-10】在例4-9中使用带ElseIf的块If语句来计算出优惠价,只 需将其中命令按钮Command1的单击(Click)事件代码改为 Private Sub Command1_Click() Dim x As Single, y As Single x = Val(Text1.Text) If x < 1000 Then y=x ElseIf x < 2000 Then y = 0.95 * x ElseIf x < 3000 Then y = 0.9 * x ElseIf x < 5000 Then y = 0.85 * x Else y = 0.08 * x End If Text2.Text = y End Sub
4.3.2 使用IIF函数
还可以使用IIf函数来实现一些比较简单的选择结构。IIf函数的 语法结构为 IIf(〈条件表达式〉,〈真部分〉,〈假部分〉) 【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可 以改为
Private Sub Command1_Click()
Dim x As Single, y As Single x = Val(Text1.Text) y = IIf(x >= 0, 1 + x, 1 – 2 * x) Text2.Text = y
4.4 多分支条件选择语句SELECT CASE
4.4.1 SELECT CASE结构与语法 4.4.2 SELECT CASE结构的应用 4.5 使用计时器控件 4.5.1 设计一个电子表 4.5.2 设计一个计时器 4.5.3 设计一个流动字幕板 4.6 提供简单选择的控件 4.6.1 选项按钮 4.6.2 复选框
04 选择结构程序设计-文本资料PPT课件
例如:if(x>y) printf(“%d”,x);
Y
执行语句
if (Number1>=Number2) Number1= Number2;
2、if(表达式) { 语句1; 语句2; 语句3; }
表达式值为真
N
Y 执行语句1
执行语句2
执行语句3
02.11.2020
15
if (Number1< Number2)
判断闰年的条件可以用一个逻辑表达式表示: (year%4==0 && year%100!=0) || year%400==0
表达式为“真”,闰年条件成立,是闰年,否则非闰年。
02.11.2020
14
4.4 if语句 和 switch语句
4.4.1 if语句
N
1、if(表达式) 语句;
表达式 值为真
}ห้องสมุดไป่ตู้
02.11.2020
02.11.2020
17
main()
{ float weight,pay; printf("Please input the weight:"); scanf("%f",&weight); if (weight>=10) pay=weight*6.5;
else pay=weight*8.5;
printf("You should pay %f yuans\n",pay);
•逻辑表达式的 值 是一个 逻辑量 “真”或“假”。
❖C语言编译系统在给出逻辑运算结果时,以1代表“真”,以0代表“假”, ❖但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”
第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语言程序设计教程:选择结构程序设计
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;
}
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;
}
第四章 选择(分支)结构程序设计
选择结构程序设计
本章要点:
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语言程序设计
选择结构是三种基本结构(顺序、选择、循环)之
本章要点:
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语言程序设计
选择结构是三种基本结构(顺序、选择、循环)之
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
switch(i) {case 1:printf(″A\n″); case 2:printf(″B\n″); case 3:printf(″C\n″); default:printf(″E\n″); case 4: printf(″D\n″); }
运行结果为: C 时, i=3 D 运行结果为: E C
23
重庆工学院计算机基础教研室
2016年3月6日星期日
#include <stdio.h> void main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("Enter profit earned:"); scanf("%ld",&i);
4
重庆工学院计算机基础教研室
2016年3月6日星期日
4.2.2 逻辑运算符和逻辑表达式
三种逻辑运算符: 逻辑非 逻辑与 逻辑或 ! a a && b a || b
高 低
• 逻辑运算符将其操作数视为逻辑值,即“真”或 “假”。而C语言对于操作数真假的判定采取了如下原 则: C语言中, 任意非零值为逻辑值真;
22 重庆工学院计算机基础教研室 2016年3月6日星期日
• 例4.3企业发放的奖金根据利润提成。 –利润(I)不超过10万元时,奖金可提10%; –利润不超过20万元时,其中的10万元按10%提成, 高于10万元的部分提成7.5%; –20万到40万元,其中的20万元按前述b方法提成, 高于20万元的部分提成5%; –40万到60万元,其中的40万元按前述c方法提成, 高于40万元的部分提成3%; –60万到100万元,其中的60万元按前述d方法提成, 高于60万元的部分提成1.5%; –高于100万元时,其中的100万元按前述e方法提成, 超过100万元的部分提成1%。 从键盘输入当月利润I,求应发放奖金总数?
4.3 选择结构的程序设计
• C语言提供两种选择控制语句:
–if 语句 –switch 语句。
所有程序的正常执行次序通常都是顺序的。然而,在 许多问题的解决方案中,常会根据情况的不同,采取 不同的处理方式。
7
重庆工学院计算机基础教研室
2016年3月6日星期日
4.3.1 if语句
if语句的一般形式:
4
第四章
选择结构 程序设计
1 重庆工学院计算机基础教研室 2016年3月6日星期日
4.1 关系运算符、逻辑运算符、条件。选择 控制是指根据指定的条件是否满足,选择下一步要执行的语 句。满足为真,不满足为假。
4.2.1 关系运算符和关系表达式
对于条件的描述,最为常见的就是关系表达式。其一般形式:
2016年3月6日星期日
编程:根据输入的学生的成绩判断等级。当成绩score ≥90时为 A等; 成绩80≤score <90 为B等; 成绩60≤score <70 为D等; 成绩 score < 60 为E等 (score 为整数)。
使用if语句
分析:score为整型数(如不是可强制转换),在score≥90 的范围内,score可能取100, 99,.....,90,利用两个整 数相除,结果自动取整的特性,score和 score /10 有 如下对应关系: score score/10 ≥90 10, 9 80~89 8 70~79 7 60~69 6 60以下 default • 因此,可以用score /10的值来确定分支。
18 重庆工学院计算机基础教研室 2016年3月6日星期日
#include <stdio.h> void main() /*用switch 语句评级 */ { int score; scanf(“%d" ,&score); if ( score<0||score>100) printf(“Error!”); switch (score /10) { case 10: case 9: printf(“%f: A\n”,score); break; case 8: printf(“%f: B\n”,score); break; case 7: printf(“%f: C\n”,score); break; case 6: printf(“%f: D\n”,score); break; default: printf("%f: E\n", score); } }
bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;
24
重庆工学院计算机基础教研室
2016年3月6日星期日
else
}
13 重庆工学院计算机基础教研室
printf (“A\n” );
2016年3月6日星期日
if语句中的表达式:
关系表达式
逻辑表达式
任意数值类型的表达式。
执行语句:
一条简单语句
空语句 复合语句 嵌套其它流程控制语句。
14 重庆工学院计算机基础教研室 2016年3月6日星期日
4.3.1 switch 语句
16 重庆工学院计算机基础教研室
break; break; break; break;
假设i=3时,则会从 i=3时做起的语句。 如果给每条语句加 上break; 这样就只执行一条 语句
break:跳出switch语句。
语句后加或不加“break;” 可以使多分支变得非常灵活。
2016年3月6日星期日
零为逻辑值假。
5
重庆工学院计算机基础教研室
2016年3月6日星期日
4.2.2 条件运算符和条件表达式
• 条件运算符(?)是C语言中惟一的一个三目运算符, 其表达式的一般形式:
操作数 1 ? 操作数2
: 操作数3
y = x >=60 ? „P‟ : „F‟
6
重庆工学院计算机基础教研室
2016年3月6日星期日
#include <stdio.h> void main() { int year,leap; printf("Enter year:"); scanf("%d",&year); if (year%400==0 || (year%4==0 && year%100!=0)) leap=1; /* 是闰年*/ else leap=0; if (leap) printf("%d is a leap year.\n",year); else printf("%d is not a leap year.\n",year); }
2016年3月6日星期日
• 例4.1从键盘读入两个整数,然后显示这两个数的商。P81
#include <stdio.h> void main() { int a, b; printf("Enter two numbers(separate by ,):"); scanf("%d,%d",&a,&b); if (b) printf("a/b=%d\n", a/b); else printf("Can not divide by zero.\n"); }
19 重庆工学院计算机基础教研室 2016年3月6日星期日
• switch语句可以作为另一个switch语句中语句序列的 一部份,形成嵌套switch语句。这时,即使内外层的 常量相同,也不会引起冲突。例如: switch (x) { case 1 : printf(“process(x , y)\n”); switch (y) { case 0 : printf(“Divided by 0 error!\n”); break; case 1 : process (x , y ); } break; case 2 : …… }
11 重庆工学院计算机基础教研室 2016年3月6日星期日
• 一个常用的嵌套if语言构成多分支选择结构, 也称为if-else-if阶梯,其一般形式如下:
if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ...... else 语句n
12 重庆工学院计算机基础教研室 2016年3月6日星期日
20 重庆工学院计算机基础教研室 2016年3月6日星期日
4.3 选择结构程序设计举例
• 例4.2从键盘读入年份,然后判断该年是否为闰年。符 合下列条件之一的年份都是闰年:
– 能被400 整除的年份; – 不能被100整除,但可以被4整除的年份。
21
重庆工学院计算机基础教研室
2016年3月6日星期日
一个判定为真的关系表达式的值为1; 一个判定为假的关系表达式的值为0。
C语言中,逻辑值真为1;逻辑值假为0。
3
重庆工学院计算机基础教研室
2016年3月6日星期日
• 字符数据同样可以用关系运算符比较,比较的依据是 其所用代码的数值。 例如比较ASCII码的字符: 表达式 ‘a’ == ‘A’ 的值为0 表达式 ‘A’ > ‘C’ 的值为0 表达式 ‘C’ < ‘a’ 的值为1
#include <stdio.h> void main() 程序是否正确 ? {int score; scanf(“%d”, &score); if ( score<0||score>100) printf(“Error!”); else if ( 0 <= score<60) printf(“E\n” ); else if ( 60<=score <70) else if ( 70<=score <80) else if ( 80<=score <90) printf (“D\n” ); printf (“C\n” ); printf (“B\n” );