您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > C语言程序设计基础――分支结构程序设计PPT课件
第四章分支结构程序设计表达式o关系表达式o逻辑表达式o条件表达式语句oif语句o多分支语句(switch)4.1.1关系运算符和关系表达式比较两个量(x,y)之间的关系xyx=yx==yxyx=yx!=y比较的结果:真31假13intx=2,y=6;x=(y3)x=(xy)10x=1x=0关系运算符的优先级运算符优先级:算术运算符高====!==低d=b+2==3d=((b+2)==3)b-1==a!=c((b–1)==a)!=c关系表达式3x5x=1时x=4时(3x)5恒为14.1.2逻辑运算符和逻辑表达式3x5035xx3并且x53x&&x5逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来逻辑运算符X&&YX||YXYXY!XX与或非逻辑与&&逻辑或||逻辑非!(x1)&&(y1)(x1)||(y1)(x1)!(x1)即x=1逻辑运算符逻辑运算的规则-真值表逻辑与&&逻辑或||逻辑非!真值表xyx&&yx||y!x假假001假真011真假010真真110逻辑运算的规则-真值表逻辑与&&逻辑或||逻辑非!真值表xyx&&yx||y!x假假001假真011真假010真真1105&&7是否合法?000非0非00非0非0!!2=?=1逻辑表达式对于X&&Y,X和Y可以是:关系表达式或逻辑量x=5&&x=33&&5(x+y)&&7X,Y可以是任意表达式判断逻辑量的真假非0表示真0表示假逻辑运算的结果1表示真0表示假!算术运算符====!=&&||=,运算符的优先级设x=1,y=2,c=0x=y==c&&!x+23(x=y==c)&&(!x+23)((x=y)==c)&&((!x+2)3)((x=y)==c)&&(((!x)+2)3))例4-3写出满足下列要求的表达式⑴ch是小写英文字母ch='a'&&ch='z'⑵x为零关系表达式x==0或逻辑表达式!x验证:x取0!x真x取非0!x假x取0x==0真x取非0x==0假等价⑶x不为零x!=0或x例4-3(4)x和y不同时为零x!=0||y!=0或x||y(5)year是闰年,即year能被4整除但不能被100整除,或year能被400整除。(year%4==0&&year%100!=0)||(year%400==0)或(!(year%4)&&year%100)||!(year%400)逻辑运算符&&和||intx,y;/*假设每次运算后,将x的值置1*/y=(31&&x++);y=(31&&x++);y=(31||x++);y=(31||x++);exp1&&exp2先算exp1,若其值为0,STOPexp1||exp2先算exp1,若其值为1,STOPy=1x=2y=0x=1y=1x=2y=1x=14.2.1基本的if语句1、if–else结构if(exp)statement_1elsestatement_2语句1表达式语句2非00x+2x0y=x2x=0if(x0)y=x+2;elsey=x*x;if–else结构if(exp)statement_1elsestatement_2scanf(%d%d,&a,&b);if(a!=b){t=a;a=b;b=t;printf(%d,%d,a,b);}elseprintf(a==b);一条语句一条语句4.2.1基本的if语句2、省略else的if结构if(exp)statement_1语句1表达式非00ch=getchar();if(ch='a'&&ch='z')ch=ch-'a'+'A';putchar(ch);ch=getchar();if(ch='a'&&ch='z'){ch=ch-'a'+'A';putchar(ch);}例4-7求最大值输入3个数,输出其中的最大值。#includestdio.hvoidmain(){inta,b,c,max;printf(inputa,b,c:\n);scanf(%d%d%d,&a,&b,&c);max=a;if(maxb)max=b;if(maxc)max=c;printf(maxis%d\n,max);}amaxbcmaxmaxIf(ab)max=a;elsemax=b;If(maxc)max=c;elsemax=max;4.2.2嵌套的if语句if(exp)statement1elsestatement21、else–if结构if(exp_1)statement_1elseif(exp_2)statement_2……elseif(exp_n-1)statement_n-1elsestatement_nif语句if语句嵌套的if语句if(exp_1)statement_1elseif(exp_2)statement_2……elseif(exp_n-1)statement_n-1elsestatement_n0表达式1表达式2语句1语句2语句n-1语句n非0表达式n-10非000非0n个分支需要n-1次比较输入变量x,计算符号函数:1当x0y=0当x=0-1当x0例:计算符号函数if(x0)y=1;elseif(x==0)y=0;elsey=-1;If(x=0)if(x==0)y=0;//elsey=1;//elsey=-1;0x0x=0y=1y=0非00非0y=-1输入变量x,计算y:x+1x1y=x+21=x2x+32=x3x+4x=3例4-9if(x1)y=x+1;elseif(x2)y=x+2;elseif(x3)y=x+3;elsey=x+4;y=x+40x1x2y=x+1y=x+2非00非0x3y=x+3非004.2.2嵌套的if语句2、嵌套的if–else结构if(exp_1)if(exp_2)statement_1elsestatement_2elseif(exp_3)statement_3elsestatement_4if(exp)statement1elsestatement2if语句if语句嵌套的if语句输入变量x,计算符号函数:1当x0y=0当x=0-1当x0例:计算符号函数if(x=0)if(x0)y=1;elsey=0;elsey=-1;x=0x0y=1y=0非00非0y=-10输入变量x,计算y:x+1x1y=x+21=x2x+32=x3x+4x=3例4-9if(x2)if(x1)y=x+1;elsey=x+2;elseif(x3)y=x+3;elsey=x+4;x2x1y=x+1y=x+2非00非00x3y=x+3y=x+4非00if(x0)y=1;elseif(x==0)y=0;elsey=-1;if(x=0)if(x0)y=1;elsey=0;elsey=-1;x=0x0y=1y=0非00非0y=-100x0x=0y=1y=0非00非0y=-12种嵌套if语句的比较else和if的匹配if(exp_1)if(exp_2)statement_1elsestatement_2elseif(exp_3)statement_3elsestatement_4if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3elsestatement_4else与最靠近它的、没有与别的else匹配过的if匹配if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3elsestatement_4改变else和if的配对if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3elsestatement_4if(exp_1)if(exp_2)statement_1elseif(exp_3)statement_3elsestatement_4if(exp_1){if(exp_2)statement_1}elseif(exp_3)statement_3elsestatement_4if(exp_1)if(exp_2)statement_1elseelseif(exp_3)statement_3elsestatement_44.2.3条件表达式exp1?exp2:exp3非00exp1y=(x0)?x+2:x*x;intn;(n0)?2.9:1n=10n=-102.91.0x+2x0y=x2x=0if(x0)y=x+2;elsey=x*x;4.3switch语句switch(表达式){case常量表达式1:语句段1case常量表达式2:语句段2....…case常量表达式n:语句段ndefault:语句段n+1}switch(表达式){case常量表达式1:语句段1case常量表达式2:语句段2....…case常量表达式n:语句段ndefault:语句段n+1}表达式的值=常量表达式2的值表达式语句段1语句段2语句段n语句段n+1表达式的值=常量表达式1的值表达式的值=常量表达式n的值其他例4-13#includestdio.hvoidmain(){intk;scanf(%d,&k);switch(k){case1:printf(I'minthecase1\n);case2:printf(I'minthecase2\n);case3:printf(I'minthecase3\n);default:printf(I'minthedefault\n);}}输入2输入6#includestdio.hvoidmain(){intk;scanf(%d,&k);switch(k){case1:printf(I'minthecase1\n);break;case2:printf(I'minthecase2\n);break;case3:printf(I'minthecase3\n);break;default:printf(I'minthedefault\n);break;}}输入2输入6if(k==1)printf(I'minthecase1\n);elseif(k==2)printf(I'minthecase2\n);elseif(k==3)printf(I'minthecase3\n);elseprintf(I'minthedefault\n);例4-14voidmain(){charc;printf(Pleaseinputacharacter:\n);c=getchar();switch(c){case'':case'\n':printf(Thisisablankorenter);break;case'0':case'1':case'2':case'3':case'4':case'5':case'6':case'7':case'8':case'9':printf(Thisisadigit.\n);break;default:printf(Thisisanothercharacter.\n);}}输入2输入a几个常量表达式共有一个语句段例4-10#includestdio.hvoidmain(){charc;printf(Pleaseinputacharacter:\n);c=getchar();if(c==''||c=='\n')printf(Thisisablankorenter);elseif(c='0'&&c='9')printf(Thisisadigit.\n);elseif(c='a'&&c='z'||c='A'&&c='Z')printf(Thisisaletter.\n);elseprintf(Thisisanothercharacter.\n);}
本文标题:C语言程序设计基础――分支结构程序设计PPT课件
链接地址:https://www.777doc.com/doc-3399269 .html