第三章 选择结构.(课件)-《C语言程序设计》同步教学(高教版)

2024-11-18
| 58页
| 176人阅读
| 40人下载
普通

内容正文:

第三章 选择结构 C语言程序设计 选择结构和条件判断 C语言有两种选择语句: (1)if语句,实现两个分支的选择结构 (2)switch语句,实现多分支的选择结构 C语言程序设计 用if语句处理选择结构举例 例:输入两个实数,按代数值由小到大的顺序输出这两个数。 C语言程序设计 解题思路: 只需要做一次比较,然后进行一次交换即可 用if语句实现条件判断 关键是怎样实现两个变量值的互换 ★ ● A B 互换前 ● ★ A B 互换后 用if语句处理选择结构举例 C语言程序设计 ★ ● A B C ★ 用if语句处理选择结构举例 C语言程序设计 ★ ● A B C ★ ● 用if语句处理选择结构举例 C语言程序设计 A B C ★ ● ★ 用if语句处理选择结构举例 ● C语言程序设计 #include <stdio.h> int main() { float a,b,t; scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f ",a,b); return 0; } 将a和b的值互换 如果a>b C语言程序设计 #include <stdio.h> int main() { float a,b,t; scanf("%f,%f",&a,&b); if(a>b) { t=a; a=b; b=t; } printf("%5.2f,%5.2f ",a,b); return 0; } 选择结构,用if语句实现的 C语言程序设计 例:输入3个数a,b,c,要求按由小到大的顺序输出。 C语言程序设计 解题思路:可以先用伪代码写出算法: if a>b,a和b对换 (a是a、b中的小者) if a>c,a和c对换 (a是三者中最小者) if b>c,b和c对换 (b是三者中次小者) 顺序输出a,b,c C语言程序设计 #include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f ",a,b,c); return 0; } 如果 a>b,将a和b对换 a是a、b中的小者 C语言程序设计 #include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f ",a,b,c); return 0; } 如果 a>c,将a和c对换 a是三者中的小者 C语言程序设计 #include <stdio.h> int main() { float a,b,c,t; scanf("%f,%f,%f",&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("%5.2f,%5.2f,%5.2f ",a,b,c); return 0; } 如果 b>c,将b和c对换 b是三者中的次小者 C语言程序设计 if语句的一般形式 if (表达式) 语句1 [ else 语句2 ] 关系表达式 逻辑表达式 数值表达式 方括号内的部分为可选的 C语言程序设计 if语句的一般形式 if (表达式) 语句1 [ else 语句2 ] 简单的语句 复合语句 另一个if语句等 C语言程序设计 最常用的3种if语句形式: 1. if (表达式) 语句1 (没有else子句) 2. if (表达式) 语句1 else 语句2 (有else子句) 3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 ┆ else if(表达式m) 语句m else 语句m+1 (在else部分又嵌套了多层的if语句) C语言程序设计 if(number > 500) cost = 0.15; else if (number > 300) cost = 0.10; else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost=0; if (number > 500) cost = 0.15; else if (number > 300) cost = 0.10; else if (number > 100) cost = 0.075; else if (number > 50) cost = 0.05; else cost = 0; 等价于 分号不能丢 C语言程序设计 说明: (1)整个if语句可写在多行上,也可写在一行上 但都是一个整体,属于同一个语句 (2)“语句1”…“语句m”是if中的内嵌语句 内嵌语句也可以是一个if语句 (3)“语句1”…“语句m”可以是简单的语句,也可以是复合语句 C语言程序设计 关系运算符及其优先次序 关系运算符: 用来对两个数值进行比较的比较运算符 C语言提供6种关系运算符: ① < (小于) ② <= (小于或等于) ③ > (大于) ④ >= (大于或等于) ⑤ == (等于) ⑥ != (不等于) 优先级相同 (高) 优先级相同 (低) C语言程序设计 关系运算符及其优先次序 关系、算术、赋值运算符的优先级 算术运算符 (高) 赋值运算符 (低) 关系运算符 C语言程序设计 关系运算符及其优先次序 c>a+b 等效于 c>(a+b) a>b==c 等效于 (a>b)==c a==b<c 等效于 a==(b<c) a=b>c 等效于 a=(b>c) C语言程序设计 关系表达式 关系表达式 用关系运算符将两个数值或数值表达式连接起来的式子 关系表达式的值是一个逻辑值,即“真”或“假” 在C的逻辑运算中,以“1”代表“真”,以“0”代表“假” C语言程序设计 逻辑运算符及其优先次序 3种逻辑运算符: &&(逻辑与) ||(逻辑或) !(逻辑非) &&和||是双目(元)运算符 !是一目(元)运算符 逻辑表达式 用逻辑运算符将关系表达式或其他逻辑量连接起来的式子 C语言程序设计 逻辑运算符及其优先次序 判断年龄在13至17岁之内? age>=13 && age<=17 判断年龄小于12或大于65? age<12 || age>65 C语言程序设计 逻辑运算符及其优先次序 a b ! a ! b a && b a || b 真 真 假 假 真 真 真 假 假 真 假 真 假 真 真 假 假 真 假 假 真 真 假 假 逻辑运算的真值表 C语言程序设计 逻辑运算符及其优先次序 逻辑运算符的优先次序 ! → && → || (!为三者中最高) 与其他运算符的优先次序 ! (高) 算术运算符 关系运算符 && 和 || 赋值运算符 (低) C语言程序设计 逻辑表达式 逻辑表达式的值应该是逻辑量“真”或“假” 编译系统在表示逻辑运算结果时 以数值1代表“真”,以0代表“假” 但在判断一个量是否为“真”时 以0代表“假”,以非0代表“真” 注意:将一个非零的数值认作为“真” C语言程序设计 逻辑表达式 (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 C语言程序设计 逻辑表达式 修改后的逻辑运算真值表 a b ! a ! b a && b a || b 非0 非0 0 0 1 1 非0 0 0 1 0 1 假 非0 1 0 0 1 假 0 1 1 0 0 C语言程序设计 逻辑表达式 判别某一年是否闰年,用逻辑表达式表示 闰年的条件是符合下面二者之一: ①能被4整除,但不能被100整除,如2008 ②能被400整除,如2000 (year % 4 == 0 && year 100 !=0) || year % 400 == 0 如果表达式值为1,则闰年;否则为非闰年 C语言程序设计 条件运算符和条件表达式 有一种if语句,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值 如:if (a>b) max=a; else max=b; max = (a > b) ? a : b; 条件运算符 C语言程序设计 条件运算符和条件表达式 有一种if语句,当被判别的表达式的值为“真”或“假” 时,都执行一个赋值语句且向同一个变量赋值 如:if (a>b) max=a; else max=b; max = (a > b) ? a : b; 条件表达式 C语言程序设计 条件运算符和条件表达式 条件表达式的一般形式为 表达式1?表达式2: 表达式3 C语言程序设计 条件运算符和条件表达式 条件运算符的执行顺序: 求解表达式1 若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值 若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值 C语言程序设计 条件运算符和条件表达式 条件运算符优先于赋值运算符 条件运算符的结合方向为“自右至左” 以下为合法的使用方法: a>b ? (max=a):(max=b); a>b ? printf(“%d”,a): printf(“%d”,b); C语言程序设计 条件运算符和条件表达式 例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。 C语言程序设计 条件运算符和条件表达式 解题思路:用条件表达式来处理,当字母是大写时,转换成小写字母,否则不转换 C语言程序设计 条件运算符和条件表达式 #include <stdio.h> int main() { char ch; scanf("%c",&ch); ch=(ch>='A' && ch<='Z‘)?(ch+32):ch; printf("%c ",ch); return 0; } C语言程序设计 选择结构的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套 一般形式: if( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4 内嵌if else总是与它上面最近的未配对的if配对 C语言程序设计 选择结构的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套 if () { if () 语句1 } else语句2 内嵌if { }限定了内嵌if范围 C语言程序设计 选择结构的嵌套 例:有一函数: 编一程序,输入一个x值,要求输出相应的y值。 C语言程序设计 选择结构的嵌套 解题思路: 用if语句检查x的值,根据x的值决定赋予y的值 由于y的可能值不是两个而是三个,因此不可能只用一个简单的(无内嵌if)的if语句来实现 C语言程序设计 选择结构的嵌套 解题思路:方法1 (1) 先后用3个独立的if语句处理: 输入x 若 x < 0, 则y =-1 若 x = 0, 则y = 0 若 x > 0, 则y = 1 输出x和y scanf("%d",&x); if(x<0) y = -1; if(x==0) y = 0; if(x>0) y = 1; printf("x=%d,y=%d ",x,y); C语言程序设计 选择结构的嵌套 解题思路:方法2 (2) 用一个嵌套的if语句处理: 输入x 若x < 0, 则y = -1 否则 若 x = 0, 则y = 0 否则 y = 1 输出x和y scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf("x=%d,y=%d ",x,y); C语言程序设计 选择结构的嵌套 解题思路:方法2 (2) 用一个嵌套的if语句处理: 输入x 若x < 0, 则y = -1 否则 若 x = 0, 则y = 0 否则 y = 1 输出x和y scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf("x=%d,y=%d ",x,y); scanf("%d",&x); if (x>=0) if (x>0) y=1; else y=0; else y=-1; printf("x=%d,y=%d ",x,y); 提倡内嵌if放在else中 C语言程序设计 用switch语句实现多分支选择结构 switch语句用来实现多分支选择结构 学生成绩分类 85分以上为’A’等 70~84分为’B’等 60~69分为’C’等 …… 人口统计分类 按年龄分为老、中、青、少、儿童 C语言程序设计 用switch语句实现多分支选择结构 例: 要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70~84分,C等为60~69分 ,D等为 60分以下 。成绩的等级由键盘输入。 C语言程序设计 用switch语句实现多分支选择结构 解题思路: 判断出这是一个多分支选择问题 根据百分制分数将学生成绩分为4个等级 如果用if语句,至少要用3层嵌套的if,进行3次检查判断 用switch语句进行一次检查即可得到结果 C语言程序设计 #include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } return 0; } 值为A C语言程序设计 #include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } return 0; } C语言程序设计 不能少 #include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } return 0; } C语言程序设计 值为C #include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } return 0; } C语言程序设计 值为F #include <stdio.h> int main() { char grade; scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } return 0; } C语言程序设计 此行位置有问题,应如何修改? switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式: switch(表达式) { case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 整数类型(包括字符型) C语言程序设计 switch语句的作用是根据表达式的值,使流程跳转到不同的语句 switch语句的一般形式: switch(表达式) { case 常量1 :语句1 case 常量2 :语句2 ┇ ┇ ┇ case 常量n :语句n default : 语句n+1 } 不能相同 C语言程序设计 scanf("%c",&grade); printf("Your score:"); switch(grade) { case 'A': printf("85~100 ");break; case 'B': printf("70~84 ");break; case 'C': printf("60~69 ");break; case 'D': printf("<60 ");break; default: printf("enter data error! "); } C语言程序设计 今天的课程就讲到这里。 谢谢大家! C语言程序设计 $$
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。