您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C语言选择结构程序设计
第4章选择结构程序设计4.1关系运算符与关系表达式4.1.1关系运算符C语言有6种关系运算符,=,,=,==,!=关系操作数可以是数值型数据和字符型数据关系成立,值1;关系不成立,值为0例如:535=35==35!=3注意:浮点数是用近似值表示,由于存储误差,可能会得出错误结果例:1.0/3.0*3.0==1.0fabs(1-1.0/3.0*3.0)1e-51001一般判断两个浮点数是否相等,采用如下形式的运算:4.1.2关系表达式用关系运算符将两个表达式连接起来,进行关系运算的式子。例如:a+bb+ca=2*b‘a’‘b’关系运算符优先级低于算术运算符,”“,”=“,””,”=“为同一级,”==“,”!=“为同一级,前者优先于后者例:a+bb+c等效于(a+b)(b+c)(2+a)==(b-a)等效于2+a==b-a其结合方向为从左到右例:inta=2,b=3,c=1abc632104.2逻辑运算符与逻辑表达式4.2.1逻辑运算符有3个:”!”,”&&”,”||”,分别表示逻辑非、逻辑与、逻辑或操作数类型可以是字符型、整型、浮点型(1)逻辑非inta=5,b=3;!a!(ab)01(2)逻辑与操作数1操作数2结果000010100111例:inta=5,b=3;a&&b(ab)&&(a0)10(3)逻辑或操作数1操作数2结果000011101111例:inta=5,b=3;a||b(ab)||(a0)114.2.2逻辑表达式用逻辑运算符将表达式连接起来就构成了逻辑表达式例:!(ab)(ab)&&(bc)(ab)&&(bc)||(b==0)优先级:”!”→”&&”→”||”“!”高于算术运算符,”&&”,”||”低于关系运算符例如:!a&&b5a==b||ac结合方向为从左到右a&&b&&cC语言逻辑表达式的特性例(逻辑与):a=0;b=1;c=a&&(b=3);例(逻辑或):a=1;b=1;c=0;d=a||b||(c=b+3);main(){intc,x,y;x=0;y=0;c=0;c=x++&&y++;printf(“\n%d%d%d\n”,x,y,c);}100main(){intc,x,y;x=1;y=1;c=0;c=x++||y++;printf(“\n%d%d%d\n”,x,y,c);}211•思考??:请问表达式m=a++&&b++与m=a&&b,a++,b++是否完全等价?4.3if语句3(0)2/(0)xxyxx(1)单分支if语句if(表达式)语句例:输入一个数,如果该数大于等于0,则输出它的平方根,如果它小于0,则不做任何处理。main(){doublex;scanf(“%lf”,&x);if(x=0)printf(“%10.6lf”,sqrt(x));}表达式语句真假(2)双分支if语句if(表达式)语句1else语句2doublex;scanf(“%lf”,&x);if(x=0)printf(“%10.6lf”,sqrt(x);elseprintf(“Enterdataerror!”);表达式语句1假语句2真例4.2输入两个数,比较其大小,将较大的数输出voidmain(){floata,b;scanf(“%f,%f”,&a,&b);if(ab)printf(“%f”,a);elseprintf(“%f”,b);}(3)多分支选择结构if(表达式1)语句1elseif(表达式2)语句2else…if(表达式n)语句nelse语句n+1表达式1表达式2表达式n语句n+1语句n语句2语句1真假假假真真例4.3计算分段函数2*(10)2(100)2(010)/10(10)xxxxyxxxxx=-10?x=0?x=10?y=x/10y=x-2y=2+xy=2*x真假假假真真if(x=-10)y=2*x;elseif(x=0)y=2+xelseif(x=10)y=x-2elsey=x/10;(4)if语句的嵌套if(表达式1)if(表达式1_1)语句1_1else语句1_2elseif(表达式2_1)语句2_1else语句2_2x=0x=0真真y=2*xy=2+x假假x=10真y=x-2假y=x/10if(x=0)if(x=-10)y=2*x;elsey=2+x;elseif(x=10)y=x-2;elsey=x/10;例4.4inttall;charsex;printf(‘inputsexandtall:”);scanf(“%c%d”,&sex,&tall);if(sex==‘F’){if(tall=150)printf(“A”);elseprintf(“B”);}else{if(tall=170)printf(“A”);elseprintf(“B”);}编程实现:根据两个数sex和tall分类,如果sex为F,当tall大于等于150时,输出A,否则输出B;若sex不为F,当tall大于等170时,输出A,否则输出B两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是()。main(){intx;scanf(“%d”,&x);if(x++5)printf(“%d”,x);elseprintf(“%d\n”,x--);}结果是7和5main(){intx=1,y=1,z=0;if(z0)if(y0)x=3;elsex=5;printf(“%d\t”,x);if(z=y0)x=3;elseif(y==0)x=5;elsex=7;printf(“%d\t”,x);printf(“%d\t”,z);}程序的运行结果:1704.4switch语句switch(表达式){case常量1:语句1case常量2:语句2……case常量n:语句ndefault:语句n+1例4.5根据变量i的值,输出字符inti;printf(“pleaseinputi:”);scanf(“%d”,&i);switch(i){case1:printf(“A\n”);case2:printf(“B\n”);case3:printf(“C\n”);case4:printf(“D\n”);default:printf(“E\n”);}例:4.6intscore;scanf(“%d”,&score);switch(score/10){case10:case9:printf(“%d:A\n”,score);break;case8:case7:printf(“%d:B\n”,score);break;case6:printf(“%d:C\n”,score);break;default:printf(“%d:D\n”,score);}根据输入的学生成绩判断等级。当成绩score=90时,为A等;成绩70=score90时,为B等;成绩60=score70时,为C等;成绩score60时,为D等(score为整数)。intx=1,y=0;switch(x){case1:switch(y){case0:printf(“x=1y=0\n”);break;case1:printf(“x=1\n”);break;}case‘2’:printf(“x=2\n”);}(2009.3)17.以下是if语句的基本形式:if(表达式)语句其中表达式A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式18.有以下程序#includestdio.hmain(){intx;scanf(%d,&x);if(x=3);elseif(x!=10)printf(%d\n,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数19.有以下程序#includestdio.hmain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf(%d,%d,%d\n,a,b,c);elseprintf(%d,%d,%d\n,a,b,c);elseprintf(%d,%d,%d\n,a,b,c);}程序运行后输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1
本文标题:C语言选择结构程序设计
链接地址:https://www.777doc.com/doc-3818357 .html