第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
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语句,实现多分支的选择结构 语句, 语句
《C语言程序设计(第五版)》第4章选择结构程序的设计 PPT课件
►(b*b-4*a*c)>=0
b*b-4*a*c>=0
►z= (x>y+3)
z= x>y+3
►(a>b)= = c
a>b= =c
►a=(b!=c)
a=b!=c
当然为提高程序的可读性、可维护性你不妨多使用 括号,因为C语言中的有些优先级很容易让你不小心犯 错。
C语言程序设计
第4章 选择结构程序设计
第10页
“>”的结果为“假”,即条件不成立。
C语言程序设计
第4章 选择结构程序设计
第5页
4.1 关系运算及关系表达式
4.1.1 关系运算符及其优先次序
运算符
含义
> 大于
优先级
结合性
>= 大于或等于 这些关系运算符等优
< 小于
先级,但比下面的优 先级高
左结合性
<= 小于或等于
== 等于 != 不等于
这些关系运算符等优 先级,但比上面的优 先级低
C语言程序设计
第4章 选择结构程序设计
第4页
4.1 关系运算及关系表达式
所谓“关系运算”实际上就是“比较运算”, 即将两个数据进行比较,判定两个数据是否符合 给定的关系。例如,
► “x>y+3”中的“>”表示一个大于关系运算。 ➢如果a的值是5,b的值是1,则大于关系运算
“>”的结果为“真”,即条件成立; ➢如果a的值是2,b的值是1,则大于关系运算
因为按照自左至右的结合方向,先执行关系运算
“a>b”得值为1(“真”),再执行关系运算“1>c”, 得值为0(“假”),因此y为0。
C语言程序设计
第04章 选择结构程序设计
第 4 章 选 择 结 构 程 序 设 计
statement1 内嵌if statement2
内嵌if
statement3 内嵌if statement4
C
语 言 程 序 设 计
例 输入两数并判断其大小关系
#include <stdio.h> void main ( ) { int x, y;
第 4 章 选 择 结 构 程 序 设 计
函数调用语句 a = 10 赋值表达式 由函数名、实际参数加上分号“;”组成。其一般形 a = 10; 赋值语句 式为:函数名 (实际参数表 ); k++ 表达式 k++; 表达式语句 空语句 printf ("C Program") 函数调用; 只有分号“;”组成的语句称为空语句。空语句是什么 printf (“C Program”); 函数调用语句 也不执行的语句。在程序中空语句可用来作空循环体。 其功能是输出字符串"C Program"。 while (getchar( ) != '\n' ) ; 本语句的功能是,只要从键盘输入的字符不是回车则 重新输入。这里的循环体为空语句。
第 4 章 言 程 序 设 计
第 4 章 选 择 结 构 程 序 设 计
复合语句 用 {…}括起来的一组语句。 一般形式为: { [数据说明部分;] #include <stdio.h> void main ( ) 执行语句部分; } { { x = 10, y = 20, z; 说明: int (1) int “}” a后不加分号 = 2, b = 3, c; 输出结果: + b; (2) z =c语法上和单一语句相同 x=+ay; z = 200 ("c = %d\n", c); (3) 复合语句可嵌套 { printf z = 30 (4) 复合语句内定义的变量只能在复合语句内使用。 } z; int z = x * y; printf ("z = %d\n", z); //输出复合语句中z的值 } printf ("z = %d\n", z); //输出复合语句外z的值 }
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"); }
Ch04_选择结构程序设计
典型示例
求最大值 成绩等级 求方程解
作业/上机
作业(做在书上)
TP62 习题4:一、二、三 TP65 习题4:2,3,5,6
上机
4.1 关系表达式与逻辑表达式
关系运算符及优先级
4.1 关系表达式与逻辑表达式
关系表达式
用关系运算符将两个操作数(常量、变量或表达式)连 接起来,进行关系运算的式子,称为关系表达式。 例如,假设n1=5,n2=8,n3=10,则:
1)关系表达式n1==n2的值为0。 2)关系表达式n1<=n3的值为1。 3)关系表达式n1+n2>n3的值为1。 4)关系表达式n1== n2>n3的值等为0。
举例
if(a>b) max=a; else max=b;
<==>
max = (a > b) ? a : b
4.4 switch表达式
switch格式
switch (<表达式>) if (<表达式> == <数值1>) { <语句或语句组1>; case <数值1>: else if (<表达式> == <数值2>) [<语句或语句组1>;] <语句或语句组2>; <==> case <数值2>: …… [<语句或语句组2>;] else …… <语句或语句组>; [default: <语句或语句组>;] }
例:设a=4,b=5: !a的值为0 a || b的值为1 4 && 0 || 2的值为1
第4章选择结构程序设计
8 t
4.3 if语句 #include <stdio.h> int main() { int a,b,c,t; scanf(“%d,%d,%d”,&a,&b,&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf(“%d,%d,%d \n”,a,b,c); return 0; }
a≥b且a≥c 最大值为a
b≥a且b≥c 最大值为b c≥a且c≥b 最大值为c
a>=b&&a>=c 最大值为a
b>=a&&b>=c 最大值为b c>=a&&c>=b 最大值为c
4.3 if语句 #include <stdio.h> int main() { int a,b,c,max; scanf(“%d,%d,%d”,&a,&b,&c); if(a>=b&&a>=c) max=a; if(b>=a&&b>=c) max=b; if(c>=a&&c>=b) max=c; printf(“max=%d\n”,max); return 0; }
表达式1 真 假 表达式2 真 假 表达式3 真 语句1 语句2 语句3 语句4 假
多个分支的选择
4.3 if语句 例:输入学生成绩,根据成绩分等级,90分以上为 ‘A‟,80~89分为‘B‟, 70~79分为‘C‟, 60~ 69分为‘D‟, 60分以下为‘E‟。 scanf(“%f”,&score); if(score>=90) printf(“A”); else if(score>=80) printf(“B”); else if(score>=70) printf(“C”); else if(score>=60) printf(“D”); else printf(“E”);
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元
C语言程序设计课件第4章选择结构程序设计
if语句中可以又包括另一个if语句,这就 是if语句的嵌套
可以用if语句的嵌套实现嵌套的选择结构
P99
4.2.4 使用嵌套的if语句实现多层判断
一般形式:
if( ) if( ) 语句1 else 语句2
else if( ) 语句3 else 语句4
内嵌if
4.3 利用switch语句实现 多分支选择结构 P103
P90
4.1.2 关系运算符和关系表达式
2.关系表达式 用关系运算符将两个数值或数值表达式
连接起来的式子
关系表达式的值是一个逻辑值,即“真 ”或“假”
在C的逻辑运算中,以“1”代表“真 ”,以“0”代表“假”
P90
4.1.2 关系运算符和关系表达式
2.关系表达式 当a=3,b=2,c=1 a>b的值为“真”,表达式值为1 (a>b)==c的值为“真” ,表达式值为1 b+c>a的值为“假”,表达式值为0
P91
4.1.3 逻辑运算符和逻辑表达式
(1) 若a=4,则!a的值为0 (2) 若a=4,b=5,则a && b的值为1 (3) a和b值分别为4和5,则a||b的值为1 (4) a和b值分别为4和5,则!a||b的值为1 (5) 4 && 0 || 2的值为1
P91
4.1.3 逻辑运算符和逻辑表达式
4.1.1 条件判断的含义 P89
在现实生活中,需要进行判断和选择的 情况是很多的
条件判断的结果是一个逻辑值:“是” 或“否”
在计算机语言中用“真”和“假”来表 示“是”或“否”
4.1.1 条件判断的含义 P89
用选择结构检查所指定的条件是否满 足,并根据判断的结果决定执行哪种 操作。如:
可以用if语句的嵌套实现嵌套的选择结构
P99
4.2.4 使用嵌套的if语句实现多层判断
一般形式:
if( ) if( ) 语句1 else 语句2
else if( ) 语句3 else 语句4
内嵌if
4.3 利用switch语句实现 多分支选择结构 P103
P90
4.1.2 关系运算符和关系表达式
2.关系表达式 用关系运算符将两个数值或数值表达式
连接起来的式子
关系表达式的值是一个逻辑值,即“真 ”或“假”
在C的逻辑运算中,以“1”代表“真 ”,以“0”代表“假”
P90
4.1.2 关系运算符和关系表达式
2.关系表达式 当a=3,b=2,c=1 a>b的值为“真”,表达式值为1 (a>b)==c的值为“真” ,表达式值为1 b+c>a的值为“假”,表达式值为0
P91
4.1.3 逻辑运算符和逻辑表达式
(1) 若a=4,则!a的值为0 (2) 若a=4,b=5,则a && b的值为1 (3) a和b值分别为4和5,则a||b的值为1 (4) a和b值分别为4和5,则!a||b的值为1 (5) 4 && 0 || 2的值为1
P91
4.1.3 逻辑运算符和逻辑表达式
4.1.1 条件判断的含义 P89
在现实生活中,需要进行判断和选择的 情况是很多的
条件判断的结果是一个逻辑值:“是” 或“否”
在计算机语言中用“真”和“假”来表 示“是”或“否”
4.1.1 条件判断的含义 P89
用选择结构检查所指定的条件是否满 足,并根据判断的结果决定执行哪种 操作。如:
第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、执行过程:
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:ZhangLiang 年龄:19 ZhangLiang, 19岁, 是大学生
8
4.2.3 条件运算符和条件表达式
• 条件运算符(?)是C语言中惟一的一个三目运算符, 其表达式的一般形式:
操作数 1 ? 操作数2
: 操作数3
y = x >=60 ? 'P' : 'F'
三目操作符 Ternary operator
例4.2 从键盘读入年份,然后判断该年是否为闰年。
25
• 例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,求应发放奖金总数?
• 表达式:通常是数字型或字符型,表达式的值, 称为开关值。
• 各个 case 后常量表达式的值必须互不相同;
• case 后面的语句可以是多条语句,也可以是复 合语句,还可以是空语句。
20
编程:根据输入的学生的成绩判断等级。当成绩score ≥90时为 A等; 成绩80≤score <90 为B等; 成绩60≤score <70 为D等; 成绩score < 60 为E等 (score 为整数)。
if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ...... else 语句n
15
#include <stdio.h> main() {
int score;
scanf("%d", &score); if ( score<0||score>100) printf("Error!"); else if (score<60) printf("不及格E \n"); else if (score<70) printf("丁D\n");
else if (score<80) printf("丙C \n");
else if (score<90) printf("乙B \n"); else printf ("甲A \n"); }
16
if语句中的表达式:
关系表达式
逻辑表达式
任意数值类型的表达式。
执行语句:
一条简单语句
空语句 复合语句 嵌套其它流程控制语句。
19
注意:
switch(i){ case 1:printf(″A\n″); break; case 2:printf(″B\n″); break; case 3:printf(″C\n″); break; case 4: printf(″D\n″); break; default:printf(″E\n″); }
13
多分支问题:
写一个程序完成下列功能: 1) 输入一个分数score 2) score<60 输出 不及格E 3) 60<=score <70 输出 丁D 4) 75<=score <80 输出 丙C 5) 80<=score <90 输出 乙B 6) 90<=score 输出 甲A
14
• 一个常用的嵌套if语言构成多分支选择结构, 也称为if-else-if阶梯,其一般形式如下:
第四章
选择结构程序设计
Selection structure if else/switch
1
操作数
双目运算符
操作数
operand operator operand
+, -, *, / 双目运算符
int a=1,b=2, c; c = a + b; // a,b 操作数 c = a - b; // a,b 操作数 c = a * b; // a,b 操作数 c = a / b; // a,b 操作数
3
操作数 6种关系运算符:
大于 小于 等于 a > b a < b a == b
关系运算符
操作数
大于等于 小于等于 不等于
a >= b a <= b a != b
关系表达式只能产生两个数值之一: 0 或 1。
一个判定为真的关系表达式的值为 一个判定为假的关系表达式的值为
1;
0。
C语言中,逻辑值真为任何非0值 ;逻辑值假为0。
9
4.3 选择结构的程序设计
• C语言提供两种选择控制语句:
–if 语句 –switch 语句。
所有程序的正常执行次序通常都是顺序的。然而,在 许多问题的解决方案中,常会根据情况的不同,采取 不同的处理方式。
10
4.3.1 if语句
if语句的一般形式:
真(非0) 表达式? 假(0)
if(表达式) 语句A else 语句B
2
4.1 关系运算符、逻辑运算符、条件运算符
本章将着重讨论利用选择控制实现选择结构程序设计。选择 控制是指根据指定的条件是否满足,选择下一步要执行的语 句。满足为真,不满足为假。
4.2.1 关系运算符和关系表达式
对于条件的描述,最为常见的就是关系表达式。其一般形式:
操作数
关系运算符
操作数
每个操作数可以是变量、常量或者是任意有效的C语言表 达式。
语句A
语句B
表达式 ? 表
else 子句,是可选的。 当无 else 子句时的if语句形式为:
假(0) 表达式?
if(表达式) 语句
语句
真(非0)
12
例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"); }
! 表示 不、否、或 反, 英文为: negation
4
• 字符数据同样可以用关系运算符比较,比较的依据是 其所用代码的数值。
例如比较ASCII码的字符: 表达式 为0 ‘a‟ == „A‟ 的值
表达式 表达式
‘A‟ > „C‟ ‘C‟ < „a‟
的值为0 的值为1
5
4.2.2 逻辑运算符和逻辑表达式
26
#include <stdio.h> void main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("Enter profit earned:"); scanf("%ld",&i);
bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;
姓名:张倩倩 年龄:17 张倩倩, 17岁, 是中学生
if (age>=18) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
7
#include <stdio.h> main(){ int age, student; char name[20]; printf("姓名:"); 姓名:WangMing scanf("%s", &name); 年龄:17 WangMing, 17岁, 是中学生 printf("年龄:"); scanf("%d", &age); student = age >=18 ? 1 : 0; if (student) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
使用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的值来确定分支。 21
三种逻辑运算符: 逻辑非 逻辑与 逻辑或 ! a a && b a || b
高 低
• 逻辑运算符将其操作数视为逻辑值,即“真”或“假”。 而C语言对于操作数真假的判定采取了如下原则: C语言中, 任意非零值为逻辑值真;
零为逻辑值假。
6
#include <stdio.h> main(){ int age, ; char name[20]; printf("姓名:"); scanf("%s", &name); printf("年龄:"); scanf("%d", &age); 姓名:郭茜莉 年龄:19 郭茜莉, 19岁, 是大学生
8
4.2.3 条件运算符和条件表达式
• 条件运算符(?)是C语言中惟一的一个三目运算符, 其表达式的一般形式:
操作数 1 ? 操作数2
: 操作数3
y = x >=60 ? 'P' : 'F'
三目操作符 Ternary operator
例4.2 从键盘读入年份,然后判断该年是否为闰年。
25
• 例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,求应发放奖金总数?
• 表达式:通常是数字型或字符型,表达式的值, 称为开关值。
• 各个 case 后常量表达式的值必须互不相同;
• case 后面的语句可以是多条语句,也可以是复 合语句,还可以是空语句。
20
编程:根据输入的学生的成绩判断等级。当成绩score ≥90时为 A等; 成绩80≤score <90 为B等; 成绩60≤score <70 为D等; 成绩score < 60 为E等 (score 为整数)。
if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ...... else 语句n
15
#include <stdio.h> main() {
int score;
scanf("%d", &score); if ( score<0||score>100) printf("Error!"); else if (score<60) printf("不及格E \n"); else if (score<70) printf("丁D\n");
else if (score<80) printf("丙C \n");
else if (score<90) printf("乙B \n"); else printf ("甲A \n"); }
16
if语句中的表达式:
关系表达式
逻辑表达式
任意数值类型的表达式。
执行语句:
一条简单语句
空语句 复合语句 嵌套其它流程控制语句。
19
注意:
switch(i){ case 1:printf(″A\n″); break; case 2:printf(″B\n″); break; case 3:printf(″C\n″); break; case 4: printf(″D\n″); break; default:printf(″E\n″); }
13
多分支问题:
写一个程序完成下列功能: 1) 输入一个分数score 2) score<60 输出 不及格E 3) 60<=score <70 输出 丁D 4) 75<=score <80 输出 丙C 5) 80<=score <90 输出 乙B 6) 90<=score 输出 甲A
14
• 一个常用的嵌套if语言构成多分支选择结构, 也称为if-else-if阶梯,其一般形式如下:
第四章
选择结构程序设计
Selection structure if else/switch
1
操作数
双目运算符
操作数
operand operator operand
+, -, *, / 双目运算符
int a=1,b=2, c; c = a + b; // a,b 操作数 c = a - b; // a,b 操作数 c = a * b; // a,b 操作数 c = a / b; // a,b 操作数
3
操作数 6种关系运算符:
大于 小于 等于 a > b a < b a == b
关系运算符
操作数
大于等于 小于等于 不等于
a >= b a <= b a != b
关系表达式只能产生两个数值之一: 0 或 1。
一个判定为真的关系表达式的值为 一个判定为假的关系表达式的值为
1;
0。
C语言中,逻辑值真为任何非0值 ;逻辑值假为0。
9
4.3 选择结构的程序设计
• C语言提供两种选择控制语句:
–if 语句 –switch 语句。
所有程序的正常执行次序通常都是顺序的。然而,在 许多问题的解决方案中,常会根据情况的不同,采取 不同的处理方式。
10
4.3.1 if语句
if语句的一般形式:
真(非0) 表达式? 假(0)
if(表达式) 语句A else 语句B
2
4.1 关系运算符、逻辑运算符、条件运算符
本章将着重讨论利用选择控制实现选择结构程序设计。选择 控制是指根据指定的条件是否满足,选择下一步要执行的语 句。满足为真,不满足为假。
4.2.1 关系运算符和关系表达式
对于条件的描述,最为常见的就是关系表达式。其一般形式:
操作数
关系运算符
操作数
每个操作数可以是变量、常量或者是任意有效的C语言表 达式。
语句A
语句B
表达式 ? 表
else 子句,是可选的。 当无 else 子句时的if语句形式为:
假(0) 表达式?
if(表达式) 语句
语句
真(非0)
12
例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"); }
! 表示 不、否、或 反, 英文为: negation
4
• 字符数据同样可以用关系运算符比较,比较的依据是 其所用代码的数值。
例如比较ASCII码的字符: 表达式 为0 ‘a‟ == „A‟ 的值
表达式 表达式
‘A‟ > „C‟ ‘C‟ < „a‟
的值为0 的值为1
5
4.2.2 逻辑运算符和逻辑表达式
26
#include <stdio.h> void main() { long int i; int bonus1,bonus2,bonus4,bonus6,bonus10,bonus; printf("Enter profit earned:"); scanf("%ld",&i);
bonus1=100000*0.1; bonus2=bonus1+100000*0.075; bonus4=bonus2+200000*0.05; bonus6=bonus4+200000*0.03; bonus10=bonus6+400000*0.015;
姓名:张倩倩 年龄:17 张倩倩, 17岁, 是中学生
if (age>=18) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
7
#include <stdio.h> main(){ int age, student; char name[20]; printf("姓名:"); 姓名:WangMing scanf("%s", &name); 年龄:17 WangMing, 17岁, 是中学生 printf("年龄:"); scanf("%d", &age); student = age >=18 ? 1 : 0; if (student) printf("%s, %d岁, 是大学生",name,age); else printf("%s, %d岁, 是中学生",name,age); }
使用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的值来确定分支。 21
三种逻辑运算符: 逻辑非 逻辑与 逻辑或 ! a a && b a || b
高 低
• 逻辑运算符将其操作数视为逻辑值,即“真”或“假”。 而C语言对于操作数真假的判定采取了如下原则: C语言中, 任意非零值为逻辑值真;
零为逻辑值假。
6
#include <stdio.h> main(){ int age, ; char name[20]; printf("姓名:"); scanf("%s", &name); printf("年龄:"); scanf("%d", &age); 姓名:郭茜莉 年龄:19 郭茜莉, 19岁, 是大学生