第3章 选择结构程序设计

上传人:无*** 文档编号:244975407 上传时间:2024-10-06 格式:PPT 页数:31 大小:643KB
返回 下载 相关 举报
第3章 选择结构程序设计_第1页
第1页 / 共31页
第3章 选择结构程序设计_第2页
第2页 / 共31页
第3章 选择结构程序设计_第3页
第3页 / 共31页
点击查看更多>>
资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,3.3,选择结构程序设计,C,程序设计案例教程,清华,&,北京交通大学出版社宗小翀 袁启昌 主编,3.1 C,语言基本,语句,简介,C,语句:,以,“;”,作分隔符,,,编译后产生机器指令,。,C,语句分类,表达式语句:表达式加分号构成,。,空语句:,;,程序控制语句,(9,种,),函数调用语句,if()else,switch,for(),while(),dowhile(),continue,break,goto,return,分支,循环,辅助控制,如,t=,t+i,;,a=3;,func,();,printf(“Hello!n,”);,复合语句:用,括起来的一组语句,一般形式:,数据说明部分;,执行语句部分;,说明:,“,”,后不加分号,语法上和单一语句相同,复合语句可嵌套,例,:,z=,x+y,;t=z/100;,pritnf(“%f”,t,);,A,B,顺序结构,顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按,从上到下,的顺序进行的。,语句执行的顺序就是书写的顺序。,以前我们所编写的程序,都是,我们一起来回忆:条件表达式,一般形式:表达式,1,?,表达式,2,:,表达式,3,例,if(ab),printf(“%d”,a,);,else,printf(“%d”,b,);,printf(“%d”,a,b?a:b);,表达式,1,表达式,2,表达式,3,非0,=0,选择型程序设计,if,语句,(条件选择语句),if,语句,最简单,形式,格式:,if(,表达式,),语句,执行过程:,例:,if(xy),printf(“%d”,x,);,真(非,0,),假(,0,),表达式,语句,先对表达式求解,若表达式的值不为,0,,则执行语句,否则不执行,如:,if(3),printf(,OK,);,说明:,if,后面的表达式类型任意,(包括整型、实型、字符型),语句可以是多个操作语句,此时要用将几个语句括起来,成为一个复合语句。,例 考虑下面程序的输出结果,:,#include,main(),int,x,y;,scanf(,%d%d,&x,&y,);,if(xy),x+;y+;,printf(,%d,%dn,x,y,);,不能实现预想的效果,#include,main(),int,x;,printf,(“,请输入一个整数:,);,scanf(%d,&x,);,if(x,0)x=-x;,printf(%d,x,);,例 用户输入一个整数,输出它的绝对值。,运行:请输入一个数,:-12,12,程序分析:,输入是可能是正数、,0,或者负数,如果输入的是正数或者,0,的话,原样输出,如果是负数的话,要输出他的相反数。,练习:输入两个实数,按从小到大的顺序输出。,程序分析:,输出两个数,a,,,b,,如果,ab,则要交换,a,,,b,,再输出。,main(),float,a,b,t,;,scanf,(%,d%d,&a,&b,),;,if(ab),t=a,;,a=b,;,b=t,;,printf,(“%,d,%d,a,b,),;,选择结构第二次课,1,、熟练掌握,if,语句的,3,种形式与使用,并理解,if,语句嵌套的二义性,;,2,、熟练掌握,switch,语句的使用方法;,3,、了解用条件运算符实现选择的方法;,4,、通过比较几种选择结构实现方法,了解各种选择结构的特性;,5,、学会选择结构程序的综合运用。,选择型程序设计,if,语句,(,选择执行语句,),if,语句的三种形式,形式一:,格式:,if(,表达式,),语句,表达式,语句,非,0,=0,例:,if(xy),printf(“%d”,x,);,表达式,语句,1,语句,2,非0,=0,形式二,(条件执行语句),格式:,if(,表达式,),语句,1,else,语句,2,例:,if(xy)max=x;,else max=y;,如:,if(a=b&x=y),printf(“a,=b,x=y”);,if(3),printf(“OK,”);,if(a),printf(“%d”,a,);,说明:,if,后面的表达式类型任意,语句可以是复合语句,例 考虑下面程序的输出结果,:,#include,main(),int,x,y;,scanf(“%d,%d”,&x,&y,);,if(xy),x=1;y=1;,else,x+;y+;,printf(“%d,%dn”,x,y,);,Compile Error!,如果输入,1,,,2,,则程序的输出结果是?,#include,main(),int,a,b;,printf(“Enter,a,b,:);,scanf(%d%d,&a,&b,);,if(a,=b),printf(a,=bn);,else,printf(a,!=bn);,例 输入两个数并判断两数是否相等,输入:,Enter a,b:12 12,则输出为:,输入:,Enter a,b:12 9,则输出为:,a=b,a!=b,形式三,:,格式:,if(,表达式,1),语句,1,else if(,表达式,2),语句,2,else if(,表达式,3),语句,3,.,else,语句,n ,表达式,1,语句,1,非,0,=0,表达式,2,表达式,3,语句,n,语句,3,语句,2,非,0,非,0,=0,=0,执行过程:,例:,if(salary1000)index=0.4;,else if(salary800)index=0.3;,else if(salary600)index=0.2;,else if(salary400)index=0.1;,else index=0;,#include,main(),char c;,printf(Enter,a character:);,c=,getchar,();,if(c=0&c=A&c=a&c=z),printf(lower,lettern);,else,printf(other,charactern);,例 输入一个字符,判断字符的种类,如果输入一个字符,a,,则输出是:,如果输入一个符号?,则程序会输出:,Lower letter,other character,if,语句嵌套,的一般形式:,if(,表达式,1),if(,表达式,2),语句,1,else,语句,2,内嵌,if,if(,表达式,1),if(,表达式,2),语句,1,else,语句,3,内嵌,if,if(,表达式,1),语句,1,else,if(,表达式,3),语句,3,else,语句,4,内嵌,if,if(,表达式,1),if(,表达式,2),语句,1,else,语句,2,else,if(,表达式,3),语句,3,else,语句,4,内嵌,if,内嵌,if,例 输入两数并判断其大小关系,#include,main(),int,x,y;,printf(Enter,integer x,y:);,scanf(%d%d,&x,&y,);,if(x!=y),if(xy),printf(X,Yn);,else,printf(X,Yn);,else,printf(X,=Yn);,运行:,Enter integer x,y:12,23,XY,if-else,配对原则:,缺省 时,,else,总是和它上面离它最近的未配对的,if,配对,if(),if(),if(),else.,else.,else.,例:,if(a=b),if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,修改:,if(a=b),if(b=c),printf(“a,=b=c”);,else,printf(“a,!=b”);,实现,if else,正确配对方法:加,例 考虑下面程序输出结果,:,main(),int,x=100,a=10,b=20;,int,v1=5,v2=0;,if(a60n”);,break;,.,例,switch(score),case 5:,printf(“Very,good!”);,case 4:,printf(“Good,!”);,case 3:,printf(“Pass,!”);,case 2:,printf(“Fail,!”);,default :,printf(“data,error!”);,运行结果:,score,为5时,输出:,Very good!Good!Pass!Fail!data error!,例,void main(),int,x=1,y=0,a=0,b=0;,switch(x),case 1:,switch(y),case 0:a+;break;,case 1:b+;break;,case 2:a+;b+;break;,case 3:a+;b+;,printf(“na,=%d,b=%d”,a,b);,运行结果:,a=2,b=1,#include,main(),int,c;,printf(Enter,m or n or h or other:);,c=,getchar,();,switch(c),case m:,printf(nGood,morning!n);break;,case n:,printf(nGood,night!n);break;,case h:,printf(nHello!n,);break;,default:,printf(n?n,);break;,例 根据输入字母输出字符串,练习,(,1,)有一函数,用,scanf,(),函数输入,x,的值,求,y,值。,运行程序,输入的值(分别为,x=10,三种情况),检查输出的值是否正确。,(,2,)给出一百分制成绩,要求输出成绩等级,A,、,B,、,C,、,D,、,E,。,90,分以上为,A,,,80-89,为,B,,,70-79,分为,C,,,60-69,分为,D,,,60,分以下为,E,。,上机习题,(,1,)有,3,个整数,a,、,b,、,c,,由键盘输入,输出其中最大的数(要求在程序中使用条件运算符)。,(,2,)编写程序,判断某年是否为闰年,(,其中,年份由键盘输入,),。,(,3,)有,4,个圆塔,圆心分别为(,2,,,2,)、(,2,,,-2,)、(,-2,,,2,)、(,-2,,,-2,),圆半径为,1,。这四个塔的高度分别为,10,米。塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为,0,,塔内的高度为,10,)。,1,、阅读以下程序:,main(),int,x;,scanf(“%d”,&x,);,if(x,-bc),printf(%dn,d,);,elseif(c-1=d)=1),printf(%dn,d+1);,else,printf(%dn,d+2),A)2,B)3,C)4,D),编译时有错,无结果,B,3,、下面程序运行后的输出结果是,_,main(),int,i=1,j=2,k=3;,if(i,+=1&(+j=3|k+=3),printf(%d,%d%,dn,i,j,k,);,A,),123,B,),234 C,),223,D,),233,4,、以下,4,个选项中,不能看作一条语句的是,A);,B)a=0,b=0,c=0;,C),if(a,0);,D),if(b,=0)m=1;n=2;,D,D,5,、已有定义,:,int,x=3,y=4,z=5;,,则表达式,!(x+y)+z-1&y+z/2,的值是,_,A)6 B)0,C)2 D)1,6,、下列条件语句中,功能与其他语句不同的是,_,A)if(a,),printf(,“,%dn,”,x,);,else,printf(,“,%dn,”,y,);,B),if(a,=0),printf(%dn,y,);,else,printf(%dn,x,);,C)if(a!=0),printf(,“,%dn,”,x,);,else,printf(,“,%dn,”,y,);,D),if(a,=0),printf(%dn,x,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!