lC语言选择结构

上传人:hy****d 文档编号:242879728 上传时间:2024-09-10 格式:PPT 页数:32 大小:160.50KB
返回 下载 相关 举报
lC语言选择结构_第1页
第1页 / 共32页
lC语言选择结构_第2页
第2页 / 共32页
lC语言选择结构_第3页
第3页 / 共32页
点击查看更多>>
资源描述
单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,第5章 选择结构,共 32页 第,*,页,首页,上页,下页,节,第五章 选择结构的程序设计,1,本章要点,关系运算符和关系表达式,逻辑运算符和逻辑表达式,if,语句,switch,语句,简单应用,第5章 选择结构的程序设计,2,第节,第节,第节,第节,if,语句,switch,语句,goto,语句,程序举例,第5章 选择结构的程序设计,3,if,语句是控制程序执行选择结构的语句,是构成结构化程序设计的三种基本结构之一,根据学生分数判断是否及格?,根据学生分数如何进行分级?,自然语言:,如果,那么,否则,C,语言:,分支语句,如何解决?,5-1,if,语句,4,一、,if,语句的三种基本形式,功能,:,判断条件为真时执行语句,否则,跳过,语句,5-1,if,语句(续),语句格式:,if (,条件) 语句组,;,例:,if (ab) x=a;,1.,单选择,if,语句,语句,N,条件,Y,条件,可以是关系式或逻辑式,5,5-1,if,语句(续),2.,双选择,if,语句,语句格式:,if (,条件),语句组1;,else,语句组2;,条件,语句1,语句2,Y,N,功能,:,判断条件为真时执行语句组1,否则执行语句组2,6,if,(a60),printf(“,及格,n”);,else,printf(“,不及格,n”);,main(), int a;,scanf(“%d”,if (a60),printf(“%dn”,a);,5-1,if,语句(续),单选择,例,输出不及格的成绩,7,求,a,和,b,两数中较大的一个,#,include ,main( ),int a,b,max;,printf(Input a and b=);,scanf(%d%d,max=a;,if ( maxb ) max=b;,printf(The max of a and b : %dn,max);,maxb ),max=a,;,/*,如果,ab,,则将,a=max */,else,max=b,;,/*,否则,,b=max */,printf(The max of a and b : %dn, max);,ab?,max=b,max=a,Y,N,5-1,if,语句(续),求,a,和,b,两数中较大的一个,9,5-1,if,语句(续),if (ab),x=a;,else,x=b;,必须有分号,复合语句的表示:,if (ab),x=a;,printf(“a=%3dn”,x);,else,x=b;,printf(“b=%3dn”,x);,下列程序是什么结构?,main(),int a=2,b=1;,if (ab),a+=+b;b*=a+b+;,printf(“%d,%dn”,a,b);,运行结果是:4,13,不能有分号,10,功能,:,从多组语句中选择满足条件的语句组执行。,3. 多选择的,i f,结构,5-1,if,语句(续),语句格式:,if (,条件1) 语句1;,else if (,条件2) 语句2;,else if (,条件3) 语句3;,else if (,条件,m),语句,m;,else,语句,n;,语句1,N,条件1,Y,条件2,条件,n,Y,Y,语句2,语句3,语句,n,N,N,多分支,11,有关,if,语句的说明,条件后面不加分号,语句之后有分号,else,不是语句,不能单独使用,当,if,后有多个执行语句时,必须用 将多,个语句括起来,构成一个复合语句,而, 之外不必有分号。,5-1,if,语句(续),12,从键盘输入一个整数,a,,,按其值的大小分别输出,a=,10;10,a=100,;100,a1000,main(), int a; scanf(“%d”,if (a10),printf(“,%d,=10n”,a);,else,if (a,=,100 ),printf(“10,%d,=100n”,a);,else,if( a1000),printf(“100,%d,1000n”,a);,5-1,if,语句(续),从四个条件中选择一个为真的执行,13,5-1,if,语句(续),按分数统计学分,将分数分为五个分数段,,分别是:90分以上、80,90、,7080、,6070、60以下,对应的学分系数分别是:,1.3、1.2、1.1、1、0。程序段如下:,if (fs=90) xf=kc*1.3;,else if (fs=80) xf=kc*1.2;,else if (fs=70) xf=kc*1.1;,else if (fs=60) xf=kc;,else xf=0.0;,printf(“xf=%f”,xf);,14,银行存款本金计算,5-1,if,语句(续),main( ) int year;,float money,rate,total;,/*,本金 月利率 本利合计*/,printf(Input money and year =?);,scanf(%f%d, ,/*,输入本金和年 */,if,( year = 1 ) rate=0.0063;,/*,根据年限定利率 */,else,if,( year = 2 ) rate=0.0066;,else,if,( year = 3 ) rate=0.0069;,else,if,( year = 5 ) rate=0.0075;,else,if,( year = 8 ) rate=0.0084;,else,rate=0.0;,total = money + money * rate *12 * year;,printf( Total = %.2fn, total);,15,二、,if,语句的嵌套,格式:,if,(,表达式),if(,表达式1),语句11,else,语句12,else,if (,表达式2) 语句21,else,语句22,在一个,if,结构中,包含一个或多个,if,结构,判断表达式的值,若为非0,再判断,表达式1,的值,非0执行语句,11,,否则执行语句,12,若表达式的值为0,再判断,表达式2,的值,非0执行语句,21,,否则执行语句,22,功能,:,5-1,if,语句(续),外,if,内嵌,if,16,5-1,if,语句(续),下列程序段表示的数学式?,y,=-1;,if (x!=0),if (x0) y=2*sin(x),;,else y=0;,else,总是与最近的,if,配对!,程序段表示的数学式1:,0 (,x0),讨论:给第二个,if,行加 后,表示的数学式?,程序段表示的数学式2:,-1 (,x0),数学式1程序可表示为:,Y=-1;,if (x!=0),if (x0) y=2*sin(x);,else y=0;,分层次,17,在,if,语句的“语句1”或“语句2”中又包含着,if,语句,main( ), int x, y;,printf (Enter integer X and Y:);,scanf (%d%d, ,if,( x != y ),if,( x y ),printf,(XYn);,else,printf,(Xb)?a:b,当,a=9,b=5,时,,x=9,条件运算要求有三个运算分量,并且不论条件是否成立,都必须是为同一个变量赋值,5-1,if,语句(续),19,3 . 条件运算符的优先级,高于赋值,低于其他,4 . 结合性:从右向左,z=(ab)?a:(ad)?c:d,5.,数据类型可以不同,xy?a:b,5-1,if,语句(续),if,语句与条件运算的关系,求一个数字的绝对值,20,5-1,if,语句(续),if ( y0 )x=-y;,elsex=y;,(,y0),?,x=-y,:,x=y,;,等价,等价,x,=,(y=80),swicth (int)(fs/10),case 8: n8=+n8;break;,case 9: n9=+n9;break;,case 10: n0=+n0;break;,default :printf(“ errorn”);,else n1=+n1;,printf (“ %d%d%d%dn”,n1,n8,n9,n0);,程序可改为:,main(),int n1=0,n8=0,n9=0,n0=0;,float fs;,scanf(“ %f”,swicth (int)(fs/10),case 8: n8=+n8;break;,case 9: n9=+n9;break;,case 10: n0=+n0;break;,default :n1=+n1;,printf (“ %d%d%d%d”,n1,n8,n9,n0);,26,5-3,goto,语句,goto,语句格式,goto,语句标号,语句标号:,功能:,无条件转向语句标号所标识的语句执行, int a;,p:,scanf(“%d”,if (a60) goto,p,;,printf(“%dn”,a);,!,不提倡使用,GOTO,语句,27,例,c4-2,5-4,应用程序举例,闰年:能够被4整除且不能被100整除的年份,或 能够被400整除的年份,例如:1996年是闰年,1900年是平年,2000年是闰年,判断闰年的,C,语言公式,year%4=0 & year%100!=0 | year%400=0,当,year=1996,时,结果为1,当,year=1997,时,结果为0,当,year=1900,时,结果为0,当,year=2000,时,结果为1,若为闰年:结果为1,若为平年:结果为0,如何处理大月、小月、,平月?如何判断闰年?,例:,输入年, 月,计算该月有多少天?,分析,28,Main(), int year,month,days;,printf(“Enter year,scanf(“%d,%d”,switch(month), case 1:,case 3:,case 5:,case 7:,case 8:,C,程序为:,5-4,应用程序举例,case 10:,/*,处理“大”月 */,case 12: days=31;break;,case 4:,case 6:,case 9:,/*,处理“小”月 */,case 11: days=30;break;,29,5-4,应用程序举例(续),case2:,/*,处理平月 */,if(year%4=0)&(year%100!=0)|(year%400)=0),days=29;,/*,如果是闰年 */,else days=28; break;,/*,不是闰年 */,default:,/*,月份错误 */,printf(“Enter error!n”);days=0;,break; ,if (days!=0),printf(“%dn”,days),30,5-4,应用程序举例(续),#,include ,main( ),int year;,float money,rate,total;,/*,本金,月利率,本利合计*/,printf(Input money and year =?);,scanf(%f%d, ,/*,输入本金和存款年限 */,switch,( year ),/*,根据年限定利率*/,case 1: rate=0.0063; break;,case 2:rate=0.0066; break;,case 3:rate=0.0069; break;,case 5:rate=0.0075; break;,case 8:rate=0.0084; break;,default:rate=0;,total = money + money * rate *12 * year;,printf( Total = %.2fn, total);,例,c4-3,例:,计算存款本利。,采用,switch,编写,31,1. 当,a=1,b=3,c=5,d=4,时:,if(ab),if(cd) x =1;,else,if(ac),if(bd) x=2;,else x=3;,else x=6;,else x=7;,练习,答案:,A) 1,B) 2,C) 3,D) 6,2.,int x=10,y=9;int a,b,c;,a=(-x=y+)?-x:+y;,b=x+; c=y;,求,a,b,c,的值,答案:,A) a=9,b=9,c=9,B) 8, 8, 10,C) 9, 10, 9,D) 1, 11, 10,5-4,应用程序举例(完),32,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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