NO.4-2《C语言程序设计》教案备注第四讲分支程序设计目1.了解条件分支和开关分支语句的特点和使用方法;的2.掌握分支程序设计的方法;要3.会进行简单问题的编程,能读出给定程序的执行结果:求3小时学时划分讲授+自学+独立作业+上机组织形式量1.条件分支控制语句2.读程序点3.编程序难点【引题]上一次课,我们重点讨论了,算法的含义,分类、结构和描述方法,以及一种最简单的程序设计,即顺序结构的程序设计方法。通过学习,我们知道,算法实质上就是我们解决问题的思路和具体步骤,是程序设计过程中,必须要事先进行的一项重要工作。程序设计实质上就是把事先设计好的算法,用C语言语句加以描述的过程。我们还知道,不管如何复杂的问题,就其算法的结构而言,都不外乎顺序、分支和循环三种结构样式。此外,不管为解决什么问题编写程序,不管它的结构如何,都必须有0个或多个输入值,有一个或多个输出值,否则编程也就失去了意义。比如说上次课,我们举的求一元二次方程解的算法就是分一种支结构。有三个输入项(A、B、C),每个分支有两个输出结果(分支1:两实根X1,X2;分支2:两虚根X1,X2)。正说明因如此,我们首先研究了最简单程序设计方法,而且我们重点讨论了是基本结C语言环境下,如何实现数据的输入及输出问题。通过研究,我们知构,常用结构道,C语言没有专门的输入输出机制,它是通过调用输入输出库函数来实现满足不同要求的数据输入和输出的。今天我们来研究另一种结构一分支结构的程序设计方法,即书中第四节的内容。3.4分支程序设计分支结构(条件分支):根据不同条件选择不同的处理块控制实现语句:if和switch语句
《C 语言程序设计》教案 NO.4-2 第四讲 分支程序设计 备 注 目 的 要 求 1. 了解条件分支和开关分支语句的特点和使用方法; 2. 掌握分支程序设计的方法; 3. 会进行简单问题的编程,能读出给定程序的执行结果; 学时划分 3 小时 组织形式 讲授+自学+独立作业+上机 重 点 难 点 1.条件分支控制语句 2.读程序 3.编程序 [引题]上一次课,我们重点讨论了,算法的含义,分类、结构和描述 方法,以及一种最简单的程序设计,即顺序结构的程序设计方法。通 过学习,我们知道,算法实质上就是我们解决问题的思路和具体步骤, 是程序设计过程中,必须要事先进行的一项重要工作。程序设计实质 上就是把事先设计好的算法,用C语言语句加以描述的过程。我们还 知道,不管如何复杂的问题,就其算法的结构而言,都不外乎顺序、 分支和循环三种结构样式。此外,不管为解决什么问题编写程序,不 管它的结构如何,都必须有 0 个或多个输入值,有一个或多个输出值, 否则编程也就失去了意义。比如说上次课,我们举的求一元二次方程 解的算法就是分一种支结构。有三个输入项(A、B、C),每个分支有 两个输出结果(分支 1:两实根X1,X2;分支 2:两虚根X1,X2)。正 因如此,我们首先研究了最简单程序设计方法,而且我们重点讨论了 C语言环境下,如何实现数据的输入及输出问题。通过研究,我们知 道,C语言没有专门的输入输出机制,它是通过调用输入输出库函数 来实现满足不同要求的数据输入和输出的。今天我们来研究另一种结 构-分支结构的程序设计方法,即书中第四节的内容。 3.4 分支程序设计 分支结构(条件分支):根据不同条件选择不同的处理块 控制实现语句:if 和 switch 语句 说明 是基本结 构,常用结 构
第四讲分支程序设计NO.4-3一、标准条件分支(if-else)(一)程序形式1. 形式流程图LFif (e)S1S2s1;else+说明s2;if-else条件分支执行s1就2.说明不执行s2,反之则反(1)e是任意表达式,sl、s2是语句或分程序(2)执行:先计算e,若e!=0,执行s1;否则执行s2(3)特殊if (x)=if (x!=0)if (!x)=if(x==0)(二)程序举例1.编程实现,任意给定一个成绩,判断是否及格mainO1float score;printf("n please input score:");scanf(%f",&score);if (score>=60)printf("pass!\n");elseprintf("fail!\n")12.编程实现,任意输入两个数,判断是否相等main()( float x,y;printf("n please input two number:");scanf(%f%f&x,&y);if(x=-y) printf("x=yln"),elseprintf("x!=yln"),1
第四讲 分支程序设计 NO.4-3 一、标准条件分支(if-else) (一)程序形式 1.形式 流程图 if (e) s1; else s2; 2.说明 (1)e 是任意表达式,s1、s2 是语句或分程序 (2)执行: 先计算 e,若 e!=0,执行 s1;否则执行 s2 (3)特殊 if (x) ≡ if (x!=0) if (!x) ≡ if (x==0) (二)程序举例 1.编程实现,任意给定一个成绩,判断是否及格 main() { float score; printf(“\n please input score:”); scanf(“%f”,&score); if (score>=60) printf(“pass!\n”); else printf(“fail!\n”); } 2.编程实现,任意输入两个数,判断是否相等 main() { float x,y; printf(“\n please input two number:”); scanf(“%f %f”,&x,&y); if (x==y) printf(“x=y\n”); else printf(“x!=y\n”); } 说明 执行 s1 就 不执行 s2, 反之则反 if-else 条件分支 F T e S2 S1
NO.4-4《C语言程序设计》教案二、特殊分支(if)(一)程序形式1. 形式if(e)或if (!e)s;s;2.说明if(e)条件分支e是任意表达式,s是语句或分程序(二)应用举例1.说出下面程序的执行结果Hmain(S1if(2*2==5<2*2==4)-if(!e)条件分支,else条件分支嵌套实例printf("F")任意给三个整数,求最大值并输出mainO2.判断输入成绩的合法性1int x,y,z,max;,main(printf("In please input x,y,z:"),1scanf("%d %d%d&x,&y,&z)if(x>=y)int score,1printf(ln please input a score:");if (x>z)max=x,scanf(%d",&score);elseif(score>100score<0)max=z,1printf("Error score!")elsetif (y>z)三、条件分支的嵌套max=y,(一)程序实例elsemax=z,(二)注意事项printf("In max=%d",max);if 和else 的配对关系:7一个else总是与其上面距它最近的且没有其他else 的if 配对
《C 语言程序设计》教案 NO.4-4 二、特殊分支(if) (一)程序形式 1.形式 if (e) 或 if (!e) s; s; 2.说明 e 是任意表达式,s 是语句或分程序 (二)应用举例 1.说出下面程序的执行结果 main() { if (2*2==5<2*2==4) ; else printf(“F”); } 2.判断输入成绩的合法性 main() { int score; printf(“\n please input a score:”); scanf(“%d”,&score); if (score>100||score <0) printf(“Error score!”); } 三、条件分支的嵌套 (一)程序实例 (二)注意事项 if..和.else ....的配对关系 .....: 一个 else 总是与其上面距它 最近的且没有其他 else 的 if 配对 S e F if (!e)条件分支 任意给三个整数,求最大值并输出 main () { int x,y,z,max; printf(“\n please input x,y,z:”); scanf(“%d %d %d”,&x,&y,&z); if (x>=y) { if (x>z) max=x; else max=z; } else { if (y>z) max=y; else max=z; } printf(“\n max=%d”,max); } 条件分支嵌套实例 T if (e)条件分支 F T e S
第四讲分支程序设计NO.4-5If(..)If(..)If(...)..;Lelse;一else..;说明if-elseif-else结构实质是if-else.;分支的多四、if-elseif分支结构层嵌套优点(一)一般形式使程序更1T加紧漆,不Tif (el)至于太靠s1;Y右elseif(e2)eS1s2;+FTS2else if(e3)s3;F说明S31+en教材P66给else if (en)F出了其他sn;例子SnSn+1else+sn+1;(二)应用实例1.编程比较任意输入两个数的大小main()int x,y,please inputtwo numbersx, y:");printf("nscanf("%dd%d",&x,&y);if (x>y)printf("x>y/n");else if (x<y)printf("x<yln");elseprintf("x=yln");1
第四讲 分支程序设计 NO.4-5 If (.) If (.) If (.) .; else .; else .; else .; 四、if-else if 分支结构 (一)一般形式 if (e1) s1; else if (e2) s2; else if (e3) s3; . else if (en) sn; else sn+1; (二)应用实例 1.编程比较任意输入两个数的大小 main() { int x,y; printf(“\n please input two numbers x, y:”); scanf(“%d %d”,&x,&y); if (x>y) printf(“x>y\n”); else if (x<y) printf(“x<y\n”); else printf(“x=y\n”); } 说明 if-else if 结构实质 是 if-else 分支的多 层嵌套 优点 使程序更 加紧凑,不 至于太靠 右 说明 教材 P66给 出了其他 例子 e1 e2 e3 . en Sn+1 S1 S2 S3 Sn T T T T F F F F
NO.4-6《C语言程序设计》教案五、开关分支(switch-case)(一)一般形式Rswitch (e)1说明casecl:表达式sl;e=cl常量表达STbreak;式c2:casee=c2语句组$2;...break;e=cn...Sncase cn:e=其它sn;Sn+1break;default:sn+1;-break;(二)程序实例用开关分支结构编程,实现根据输入的字母输出学生成绩的相应分数段算法:输入字母chswitch (ch)CDDEA其它70-790-5990-10080-8960-69Error!输出成绩1程序:#includee<stdio.h>mainO1charc;c=getcharO;switch (c)tA":caseprintf(n 90-100");break;case‘B':printf(c"n80-89");break;"C":caseprintf("n70-79");break;"D':caseprintf(n60-69");break;
《C 语言程序设计》教案 NO.4-6 五、开关分支(switch-case) (一)一般形式 switch (e) { case c1: s1; break; case c2: s2; break; . case cn: sn; break; default: sn+1; break; } (二)程序实例 用开关分支结构编程,实现根据输入的字母输出学生成绩的相应 分数段 算法: 程序: #include <stdio.h> main() { char c; c=getchar(); switch (c) { case ‘A’; printf(“\n 90-100”); break; case ‘B’: printf(“\n 80-89”); break; case ‘C’: printf(“\n 70-79”); break; case ‘D’: printf(“\n 60-69”); break; } 说明 表达式 常量表达 式 语句组 e S1 S2 Sn e=c1 e=c2 e=cn . e=其它 Sn+1 输入字母 ch switch (ch) A B C D E 其它 输出成绩 90-100 80-89 70-79 60-69 0-59 Error!