您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > c语言课件第4章 选择结构的语句及流程
第四章选择结构的语句及流程控制关系运算符和关系表达式逻辑运算符和逻辑表达式条件运算符if~else语句及三种形式switch多分支语句关系运算符主要用于两个量大小的比较。关系运算符列表如下:运算符名称关系表达式例关系大于aba大于b小于qjq小于j==等于m1==m2m1等于m2=大于等于sum=m1sum大于等于m1=小于等于m1=qm1小于等于q!=不等于c1!=c2c1不等于c2在关系表达式中,若关系成立,则表达式的值为1,否则为0。(例子c501.c)关系运算符及关系表达式逻辑运算符列表如下:运算符名称逻辑表达式例说明!逻辑非!a单目运算:非a&&逻辑与a&&ba与b||逻辑或a||ba或b逻辑表达式的结果为真(1)或假(0)值。若:a=b=6;c=8;则:(ab)&&(ca)其值为假(0)(ab)||(ca)其值为真(1)!(a==b)&&(ca)其值为假(0)!4||9其值为真(1)逻辑运算符及逻辑表达式ab!a!ba&&ba||b110011100101011001001100注意:从上表可以看出对:A&&b的计值,若a的值为假则该式的值为假,因此不需要再计b值.a||b的计值,若a的值为真则该式的值为真,因此不需要再计b值.(例子c502.c)也称这样的表达式为短路表达式。逻辑运算的真值表:选择结构if(条件分支)语句的三种格式:形式1:if(表达式)语句1else语句2功能:根据表达式的计值,决定其后要执行的操作。若表达式的值非0,则执行语句1,否则执行语句2。例:前边计算三角形面积的程序,不是任意三条边都可组成一个三角形。三角形边的关系:两边之和大于第三边;两边之差小于第三边。完善程序#includemath.hmain(){floata,b,c,s,area;printf(inputa,b,c:);scanf(%f,%f,%f,&a,&b,&c);if(a+bc&&a+cb&&b+ca&&fabs(a-b)c&&fabs(a-c)b){s=(a+b+c)/2.;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(\narea=%-f,area);}elseprintf(dataerror!!!);}程序c503:表达式语句1语句2选择结构形式2:if(表达式)语句功能:根据表达式的计值,决定其后要执行的操作。若表达式的值非0,则执行语句,否则执行下一个语句。例:求三个数中最大者(c504,c505):main(){inta,b,c,max;printf(inputa,b,c:);scanf(%d,%d,%d,&a,&b,&c);if(ab)max=b;elsemax=a;if(cmax)max=c;printf(\nmax=%-d,max);}main(){inta,b,c,max;printf(inputa,b,c:);scanf(%d,%d,%d,&a,&b,&c);max=a;if(ab)max=b;if(cmax)max=c;printf(\nmax=%-d,max);}选择结构if(表达式1)语句1elseif(表达式2)语句2elseif(表达式3)语句3…。。。。if(表达式n)语句nelse语句n+1形式3:这种格式也称之为嵌套的if~else~语句,其执行流程如下:完善一元二次方程的求根程序,考虑系数a=0;等根和复数根情况。先看一下流程图:例:程序c506:#includemath.hmain(){floata,b,c,p,q,t,x1,x2;printf(inputa,b,c:);scanf(%f,%f,%f,&a,&b,&c);if(a==0.)printf(a==0!!!return.);else{p=-b/(2.*a);t=b*b-4*a*c;q=sqrt(fabs(t))/(2.*a);if(t==0.)printf(\nx1=x2=%-f,p);elseif(t0.)printf(\nx1=%-f,x2=%-f,p+q,p-q);elseprintf(\nx1=%-f+%fi,x2=%-f-%fi,p,q,p,q);}}例计算运费问题:路程(s)越远,运费越低,标准如下:路程s(km)折扣(%)s2500250=s5002500=s100051000=s200082000=s300010s=300015计算运费公式:总运费(f)=基本费(p)*货物重量(w)*路程(s)*(1-折扣(d))流程图程序如下:(c507)main(){floatf,p,w,s,d;printf(inputp,w,s:);scanf(%f,%f,%f,&p,&w,&s);if(s250.)d=0.;elseif(s500.)d=.02;elseif(s1000.)d=.05;elseif(s2000)d=.08;elseif(s3000)d=.1;elsed=.15;f=p*w*s*(1-d);printf(\nw=%-fs=%-ff=%-f,w,s,f);}条件运算符及条件表达式条件运算符要求有三个运算量,这是一个三目运算符,其表达式的一般格式:表达式1?表达式2:表达式3若表达式1计值非0,则取表达式2的值,否则取表达式3的值。例:求三个数a,b,c中的大者。(例子c508)main(){inta=-21,b=32,c=122,max;max=ab?a:b;max=maxc?max:c;/*max=ab?(ac?a:c):(bc?b:c);*/printf(“max=%d”,max);}开关分支(switch)语句功能:根据switch表达式的值,找出与之匹配的case常量表达式i的值,然后执行语句组i,若没有与之匹配的值,则执行语句组n+1。switch(表达式){case常量表达式1:语句组1case常量表达式2:语句组2……case常量表达式n:语句组ndefault:语句组n+1}格式:例:将上例以Switch语句实现main(){floatf,p,w,s,d;intk;printf(inputp,w,s:);scanf(%f,%f,%f,&p,&w,&s);k=s/250;switch(k){case0:d=0.;break;case1:d=.02;break;case2:case3:d=.05;break;case4:case5:case6:case7:d=.08;break;case8:case9:case10:case11:d=.1;break;default:d=.15;}f=p*w*s*(1-d);printf(\nw=%-fs=%-ff=%-f,w,s,f);}程序如下(c509):程序续注意:1)常量表达式的值必须各不相同;2)case出现的次序无关;3)break语句的作用;4)多个case共用一组执行语句;5)case语句的嵌套。intx=1,y=0;switch(x){case1:switch(y){case0:printf(“**1**\n”);break;case1:printf(“**2**\n”);break;}case2:printf(“**3**\n”);}运行结果为:**1****3**布置作业
本文标题:c语言课件第4章 选择结构的语句及流程
链接地址:https://www.777doc.com/doc-3369994 .html