程序设计基础教案112课时——选择结构多分支结构.docx
教案序号11周次授课形式新授授课章节名称选择结构(三)多分支结构教学目的掌握多分支结构ife1se的嵌套使用教学重点多分支结构的理解教学难点使用if多分支结构使用教具机房课外作业课后体会授课主要内容一、多分支if,e1seif语句形式多分支ifCISe语句也称规则嵌套形式,一般形式为:if(表达式1)语句序列1e1seif(表达式2)语句序列2e1seif(表达式3)语句序列3e1seif(表达式nT)语句序列nTe1se语句序列n这种结构是从上到下逐个对条件进行判断,一旦发现条件满足点就执行与它有关的语句,并跳过其它剩余阶梯;若没有一个条件满足,则执行最后一个e1se语句n。最后这个e1se常起着缺省条件的作用。其流程图如图4.8所示。图4.8多分支if结构例4.10判断从键盘输入的字符是数字、字母、空格还是其它字符。算法分析:ASCII码表中的每个字符都有一个值,ASCII码表的编排也是有一定规律的,通常同一类别的字符相邻而放,其值也是连续的。比如0''9"的ASCn码值是4857、'A''Z'ASCII码值是6590、'a''z'ASCII码值是97122。判断字符的类别就是判断字符对应的ASCII值的大小、范围。其流程图如图4.9图4.9例4.10流程图所示。程序代码:#inc1ude<stdio.h>intmain()(charchi;Printf("请输入一个字符:n");SCanf("%c”,&ch1);printf(输入的字符是:”);if(ch1>=0,&&ch1<=9,)Printf(数字:%cn*,chi);e1seif(ch1>,a,&&ch1<=,z,ch1>=*A,&&ch1<=,Z,)Printf("字母:%cn*,chi);e1seif(ch1=*')Printf("空格:%cn*,chi);e1sePrintf("其它符号:%cn,z,chi);return0;运行情况如下:请输入一个字符:A输入的字符是:字母:A请输入一个字符:6输入的字符是:数字:6M输入一个子符:输入的字符是:空格:请输入一个字符:7输入的字符是:其它符号:?例4.11编写一程序,根据学生的百分制成绩来划分成绩的优、良、及格和不及格C其划分热则如下:分数等级90100优7589良6074及格059不及格假定考分变量为score,学号多所示。intscore,num输入score,numscore>89M_一假输出优sKscore>74输出良score>60输出及格输出不及格算法流程图如图4.10所示。据此算法写出源程序如下:ftinc1ude<stdio.h>图4.10例4.11流程图intmain()intscore,num;Printf(请输入学生的学号,分数:n);scanf(,%d,%c,&num,&score);if(score>89)Printf(学号:%d的学生,成绩优n,num);e1seif(score>74)Printf("学号:%d的学生,成绩良n,num);e1seif(score>60)Printf(学号:%d的学生,成绩及格n”,num)e1sePrintf(学号:d的学生,成绩不及格n,num)return0;例4.12有一函数:1-I当x<0y=<0当x=0I1当x>0编一程序,对输入的X值,输出对应的y值。判断以下3种方法是否都正确?方法1:ftinc1ude<stdio.h>intmain()(f1oatx;inty;printf("请输入一个X值:”);scanf("%f",&x);if(x<O)y=-1;if(x=O)y=O;if(x>0)y=1;printf("%c,y);returnO;)方法2:ftinc1ude<stdio.h>intmain()f1oatx;inty;printf("请输入一个x值:;scanf(,%fz,&x);if(x<0)y=-1;e1seif(x0)y=0;e1sey=1;printf("%c,y);return0;方法3:#inc1ude<stdio.h>intmain()f1oatx;inty;pritf("请输入一个X值:);scanf(z/%fz,&x);if(x>=0)(if(x>0)y=1;e1sey=0;)e1sey=-1;printf(,z%d,z,y);return0;)分析;上述3种方法都正确。方法1用了三条if语句;方法2用了ife1seif语句;方法3的if语句中又有ife1se语句。注意:在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下:if()if<)语句1-1内嵌ifeIse语句2e1seif()语句3IKF/内嵌ife1se语句4应当注意if与e1se的配对关系。为防止二义性的出现,e1se总是与它上面的最近的未配对的if配对。如果if与e1se的数目不一样,为实现程序设计者的目的,可以加花括弧来确定配对关系。例如:if()if()语句1e1se语句2此时限定了内嵌if语句的范围,因此e1se与第一个if配对。例4.13从键盘输入三个数,求其中最大数。方法1:算法N-S流程图如图4.11所示。据此算法写出源程序如下:ttinc1ude<stdio.h>intmain()intX,y,z,max;Printf(请输入三个整形数据X,y,zn);scanf(,z%d,%d,%d",&x,&y,&z);max=x;if(z>y)e1seif(y>x)max=y;)Printf("三个数中最大数是:%dn,z,max);returnO;)运行情况如下:请输入三个整形数据x,y,z6,4,9三个数中最大数是:9请输入三个整形数据,y-N1,26,4三个数中最大数是:2688,6,2三个数中最大数是:88