C语言程序设计教案 。选择结构程序设计(一) 说明 内容1.关系运算符和关系表达式 2.逻辑运算符和逻辑表达式 条件运算符及条件表达式 4.IF语句 重点1.关系运算符和关系表达式 2.逻辑运算符和逻辑表达式 3.条件运算符及条件表达式 4.IF语句的格式使用 难点复杂条件的表示:IF语句的正确使用。 问题前几讲已经介绍了顺序结构,但大多程序中都会有根据所指定的条 提出件是否满足,在两组操作中选择执行其一的操作。此时仅用顺序结 构是无法满足用户要求的。 详细 关系运算符和关系表达式 内容1.关系运算符: 操作符 作用 大于 大于等于 小于 小于等于 等于 不等于 2.关系表达式 由关系运算符将两个表达式连接起来的式子,称关系表达式。举例说明 逻辑运算符和逻辑表达式 1.逻辑运算符 && 逻辑与 逻辑或 逻辑非 2.逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻 辑表达式。 3.逻辑运算符的优先级 &&→‖ 条件运算符及条件表达式 1.条件运算符 C语言中唯一的一个三目运算符 2.条件表达式 形式:表达式1?表达式2:表达式3 说明: 条件运算符的执行顺序 条件运算符优先于赋值运算
C 语言程序设计教案 选择结构程序设计(一) 说明 内容 1.关系运算符和关系表达式 2.逻辑运算符和逻辑表达式 3.条件运算符及条件表达式 4.IF 语句 举例说明 重点 1.关系运算符和关系表达式 2.逻辑运算符和逻辑表达式 3.条件运算符及条件表达式 4.IF 语句的格式使用 难点 复杂条件的表示;IF 语句的正确使用。 问题 提出 前几讲已经介绍了顺序结构,但大多程序中都会有根据所指定的条 件是否满足,在两组操作中选择执行其一的操作。此时仅用顺序结 构是无法满足用户要求的。 详细 内容 一、关系运算符和关系表达式 1.关系运算符: 操作符 作用 > 大于 >= 大于等于 < 小于 <= 小于等于 = = 等于 != 不等于 2.关系表达式: 由关系运算符将两个表达式连接起来的式子,称关系表达式。 二、逻辑运算符和逻辑表达式 1.逻辑运算符 && 逻辑与 || 逻辑或 ! 逻辑非 2.逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻 辑表达式。 3.逻辑运算符的优先级 ! → && → || 三、条件运算符及条件表达式 1.条件运算符 ? : C 语言中唯一的一个三目运算符。 2.条件表达式 形式:表达式 1?表达式 2:表达式 3 说明: ·条件运算符的执行顺序 ·条件运算符优先于赋值运算符
C语言程序设计教案 运算符的结合方向为“自右至左” 表达式1的类型可与表达式2和表达式3的类型不同 四、IF语句 在C中条件语句的一般形式为 if(表达式) 语句1; else 语句2 执行过程如下: 如果表达式的值为非0TURE)即真,则执行语句1,执行完语句1 从语句2后开始继续向下执行;如果表达式的值为0 FALSE)即假,则 跳过语句1而执行语句2。然后程序继续往下执行。所谓表达式是指 任何合法的C语言表达式 注意 注意1.条件执行语句中“else语句2;”部分是选择项可以缺省,此时条 件语句变成 if(表达式)语句1; 表示若表达式的值为非0则执行语句1,否则跳过语句1继续往 下执行。 如果语句1或语句2有多于一条语句要执行时,必须使用"{"和"} 把这些语句包括在其中,此时条件语句形式为 if(表达式 (语句体1;} else 语句体2,} 、举例说明 例1:计算y的值 x+1 >1 X< main() printf("请输入x:") scanf (" %f,& +1 else printf x=%6. 2f, y=%6. 2f\n",x, y)
C 语言程序设计教案 注意 ·运算符的结合方向为“自右至左” ·表达式 1 的类型可与表达式 2 和表达式 3 的类型不同。 四、IF 语句 在 C 中条件语句的一般形式为: if(表达式) 语句 1; else 语句 2; 执行过程如下: 如果表达式的值为非 0(TURE)即真, 则执行语句 1, 执行完语句 1 从语句 2 后开始继续向下执行; 如果表达式的值为 0(FALSE)即假, 则 跳过语句 1 而执行语句 2。然后程序继续往下执行。所谓表达式是指 任何合法的 C 语言表达式。 注意: 1. 条件执行语句中“else 语句 2;”部分是选择项, 可以缺省, 此时条 件语句变成: if(表达式) 语句 1; 表示若表达式的值为非 0 则执行语句 1 , 否则跳过语句 1 继续往 下执行。 2. 如果语句 1 或语句 2 有多于一条语句要执行时, 必须使用"{"和"}" 把这些语句包括在其中, 此时条件语句形式为: if(表达式) { 语句体 1; } else {语句体 2;} 五、举例说明 例 1:计算 y 的值 main( ) { float x; float y; printf(″请输入 x: ″); scanf(″%f″, &x); if (x>1) y=x+1; else y=x- 1; printf(″x=%6.2f, y=%6.2f\n″, x, y); } 1 1 1 1 + − x x x x y=
C语言程序设计教案 例2从键盘接收两个数,求两个数中的最大值、最小值 main() float max, min printf 请输入两个数 scanf %f, %f,&x, &y) max-x In-v ax-y printf (max=%6. 2f, min=%6 2f\n", max, min) 例3输入三个整数,按大小顺序输出 程序如下: #include man I int a, b scanf(“%d,%d,%d”,&a,&b,&c) if (a<b) a=b: b= f(a<c) I temp=a: a=c c=temp: 1 if (b<c) te c-temp printf(“%4d,%d,%4d”,a,b,c) 总结本讲对关系运算符和关系表达式、逻辑运算符和逻辑表达式做了详细 的论述:并对条件运算符及条件表达式:通过对上面的论述,可以得 到对选择结构条件的建立。用IF语句对选择结构来得到实现,IF语 句的格式及其应用
C 语言程序设计教案 总结 例 2 从键盘接收两个数, 求两个数中的最大值、最小值 main( ) { float x, y; float max, min; printf(″请输入两个数 x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) { max=x; min=y; } else { max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 例 3 输入三个整数,按大小顺序输出 程序如下: #include main() { int a,b,c,temp ; scanf(“%d,%d,%d”,&a,&b,&c) ; if (a<b) { temp=a; a=b ; b=temp ; } if (a<c) { temp=a; a=c ; c=temp ; } if (b<c) { temp=b; b=c ; c=temp ; } printf(“%4d ,%4d ,%4d” ,a,b,c) ; } 本讲对关系运算符和关系表达式、逻辑运算符和逻辑表达式做了详细 的论述;并对条件运算符及条件表达式;通过对上面的论述,可以得 到对选择结构条件的建立。用 IF 语句对选择结构来得到实现,IF 语 句的格式及其应用
C语言程序设计教案 选择结构程序设计(二) 兑明 内容|1.i语句的嵌套 2. switch语句 重点1.i语句的嵌套方法 2. switch语句的应用条件使用方法 难点复杂条件的表示:i和 switch语句的正确使用。 问题前面讲了关于两选一的操作,那么多种选择怎么实现呢? 提出 详细 if语句的嵌套 内容 条件语句可以嵌套,这种情况经常碰到,但条件嵌套语句容易 出错,其原因主要是不知道哪个if对应哪个 else 可用阶梯式if-else-if结构 条件 条件 条件 语句 语句2语句3语句4 举例说明 三层阶梯式if语句执行流程图 阶梯式结构的一般形式为 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式3) 语句3; Is 语句 这种结构是从上到下逐个对条件进行判断,一旦发现条件满足 就执行与它有关的语句,并跳过其它剩余阶梯;若没有一个条件满 足,则执行最后一个clse语句n。最后这个else常起着"缺省条件的 作用
C 语言程序设计教案 选择结构程序设计(二) 说明 内容 1.if 语句的嵌套 2.switch 语句 举例说明 重点 1.if 语句的嵌套方法 2.switch 语句的应用条件使用方法 难点 复杂条件的表示;if 和 switch 语句的正确使用。 问题 提出 前面讲了关于两选一的操作,那么多种选择怎么实现呢? 详细 内容 一、if 语句的嵌套 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易 出错,其原因主要是不知道哪个 if 对应哪个 else。 可用阶梯式 if-else-if 结构。 三层阶梯式 if 语句执行流程图 阶梯式结构的一般形式为: if(表达式 1) 语句 1; else if(表达式 2) 语句 2; else if(表达式 3) 语句 3; . else 语句 n; 这种结构是从上到下逐个对条件进行判断, 一旦发现条件满足 就执行与它有关的语句, 并跳过其它剩余阶梯; 若没有一个条件满 足, 则执行最后一个 else 语句 n。最后这个 else 常起着"缺省条件的 作用。 条 件 11 条 件 2 条 件 333 语句 1 语句 2 语句 3 语句 4
C语言程序设计教案 同样,如果每一个条件中有多于一条语句要执行时,必须使用 "{"和"}"把这些语句包括在其中 例1编程计算函数值 0 main() 本题的解法很 float y 多,请读者自 printf("请输入x:") 己设计一种解 重点 f(x<0) printf x=%. 4f, y=%5. 2f\n", x, y) h语句 引入:虽然语句的规则嵌套可以实现多分支的选择但不够直 观简洁特别是在分支较多的情况下,f语句的嵌套层次也会更深增 加了理解的难度,也不便于修改和扩充。多分支选择的 switch语句 能够解决多分支选择问题更加方便有效。 具体输入几个 常量表达式 数据作为讲解 常量 其他 常量2常量n 示例应包括几 语句1语句2 语句n语句n+1 个方面 switch语句执行流程图
C 语言程序设计教案 重点 同样, 如果每一个条件中有多于一条语句要执行时, 必须使用 "{"和"}"把这些语句包括在其中。 例 1 编程计算函数值 main( ) { float x; float y; printf(″请输入 x: ″); scanf(″%f″, &x); if (x<0) y=-1; else if (x=0) y=0; else y=1; printf(″x=%8.4f, y=%5.2f\n″, x, y); } 二、switch 语句 引入:虽然 if 语句的规则嵌套可以实现多分支的选择,但不够直 观简洁,特别是在分支较多的情况下,if 语句的嵌套层次也会更深,增 加了理解的难度,也不便于修改和扩充。多分支选择的 switch 语句, 能够解决多分支选择问题更加方便有效。 switch 语句执行流程图 本题的解法很 多,请读者自 己设计一种解 法。 具体输入几个 数据作为讲解 示例 示例应包括几 个方面 常量表达式 语句 1 语句 2 …… 语句 n 语句n+1 常量 1 其他 常量 2 常量 n = − 0 1 1 y 0 0 0 = x x x
C语言程序设计教案 1.开关语句 开关语句格式为 switch(表达式 {case常量1 可以用一个具 语句1或空 体例题引入 常量2 语句2或空 case 常量n; 语句n或空 default 语句n+1或 执行 switch开关语句时,将常量表达式的值逐个与case后的常 量进行比较,若与其中一个相等,则执行该常量下的语句,若不与 任何一个常量相等,则执行 default后面的语句。注意 switch中case常量可以是数值(整数),也可以是字符, 但不能为其他的值 2.可以省略一些case和 default。 3.每个case或 default后的语句可以是多个语句,但不需要 使用"{"和"}"括起来。 强调表达式的 4.每个case语句体的最后都应有一个 break语句。 值与case后面 5使用 switch语句的关键是构造swih后的表达式和确定es常量的关系 常量表 例1:从键盘输入一个字符,若为’a’输出 abort,若为’q 输出quit,’f 输出fail,其他字符输出出错信息’ error’。 ino switch(ch)/*变量为整型数的开关语句* case‘a break;/*退出开关语句*/ case printf( quit\n") break case printf( fail\n) break ts( error
C 语言程序设计教案 1. 开关语句 开关语句格式为: switch(表达式) { case 常量 1: 语句 1 或空; case 常量 2: 语句 2 或空; …… …… …… case 常量 n; 语句 n 或空; default: 语句 n+1 或空; } 执行 switch 开关语句时, 将常量表达式的值逐个与 case 后的常 量进行比较, 若与其中一个相等, 则执行该常量下的语句, 若不与 任何一个常量相等, 则执行 default 后面的语句。注意: 1. switch 中 case 常量可以是数值(整数), 也可以是字符, 但不能为其他的值。 2. 可以省略一些 case 和 default。 3. 每个 case 或 default 后的语句可以是多个语句, 但不需要 使用"{"和"}"括起来。 4.每个 case 语句体的最后都应有一个 break 语句。 5.使用 switch 语句的关键是构造 switch 后的表达式和确定 case 常量表。 例 1:从键盘输入一个字符,若为’a’ 输出 abort ,若为’q’ 输出 quit,’f’ 输出 fail,其他字符输出出错信息’error’。 main() { char ch ; ch=getchar() ; switch(ch) /*变量为整型数的开关语句*/ { case ‘a’: printf("abort\n"); break; /*退出开关语句*/ case ‘q’: printf("quit\n"); break; case ‘f’: printf("fail\n"); break; default: puts("Error"); break; } } 可以用一个具 体例题引入 强调表达式的 值与 case 后面 常量的关系
C语言程序设计教案 例2:输入一个百分制成绩,输出对应的等级。 分析:解决本题的关键是如何将输入的百分制成绩与case常 量联系起来,不难想到将百分制成绩(用 score表示)除以10之 后再取整,一定得到0到10之间的数。9、10对应’a’,8对应“b ,……,5、4、3、2、1、0对应’e’既不及格 #include<stdio. h cha float score printf(“ please input a score\n”) scanf(“%f”,& score) switch((int)(score/10. 0)) case case9: grade=’A’; break case 8 =’B'; break case 7 =’C’; break D’; break default: grade printf(“ score=%f, grade=%c”, score, grade) 从以上两例的解决办法看,使用 switch语句编写程序的关键是如何 构造 switch后的常量表达式和case常量表。 输入几个数据 作为讲解示例 本讲小结 示例应包括几 1.阶梯式结构的一般形式为: 种情况 if(表达式1) 语句1; else if(表达式2) 语句2 当学生理解到 else if(表达式3) 一定程度,可 语句3 以向学生提出 些问题启发 学生对程序的 语句 理解 2. switch(表达式) case常量1 语句1或空
C 语言程序设计教案 例 2: 输入一个百分制成绩,输出对应的等级。 分析:解决本题的关键是如何将输入的百分制成绩与 case 常 量联系起来,不难想到将百分制成绩(用 score 表示)除以 10 之 后再取整,一定得到 0 到 10 之间的数。9、10 对应’a’,8 对应‘b ‘,……,5、4、3、2、1、0 对应’e’既不及格。 #include main() { char grade; float score; printf(“please input a score\n”); scanf(“%f”,&score) ; switch((int)(score/10.0)) { case 10: case 9: grade=’A’;break; case 8: grade=’B’;break ; case 7: grade=’C’;break ; case 6: grade=’D’;break; default: greade=’E’ ; } printf(“score=%f,grade=%c”,score,grade) ; } 从以上两例的解决办法看,使用 switch 语句编写程序的关键是如何 构造 switch 后的常量表达式和 case 常量表。 本讲小结: 1.阶梯式结构的一般形式为: if(表达式 1) 语句 1; else if(表达式 2) 语句 2; else if(表达式 3) 语句 3; . else 语句 n; 2.switch(表达式) { case 常量 1: 语句 1 或空; 输入几个数据 作为讲解示例 示例应包括几 种情况 当学生理解到 一定程度,可 以向学生提出 一些问题启发 学生对程序的 理解
C语言程序设计教案 case常量2: 语句2或空 case常量n; 语句n或空 default 语句n+1或空; 总结本节主要解决多种选择的实现,并讲述了关于选择结构的嵌套,用 嵌套来实现多种选择的分支语句。这个是本章的重点也是难点
C 语言程序设计教案 总结 case 常量 2: 语句 2 或空; case 常量 n; 语句 n 或空; default: 语句 n+1 或空; } 本节主要解决多种选择的实现,并讲述了关于选择结构的嵌套,用 嵌套来实现多种选择的分支语句。这个是本章的重点也是难点