考点分析四选择结构.ppt_第1页
考点分析四选择结构.ppt_第2页
考点分析四选择结构.ppt_第3页
考点分析四选择结构.ppt_第4页
考点分析四选择结构.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

考点分析四,选择结构,考点1 C语言的逻辑值,计算机中有两个逻辑值,分别用“真”和“假”表示,任何复杂计算都是以这两个逻辑计算为基础。C语言中没有专门的逻辑值,用非0表示“真”,用0表示“假”。因此对于任何一个表达式,如果值为0,则代表“假”,反之,如果值不为0 ,则无论正负都代表“真”。,1、选择结构和逻辑值,关系运算符实际就是比较两个运算对象的大小。C语言中的关系运算符包括: 、= 、= 、!=。分别为小于、小于等于、大于、大于等于、等于、不等于运算。 说明1)由两个字符组成的运算符之间不能有空格; 2)注意区分“=”和“=”,前者才是数学中的等于; 3) 、= 优先级相同,= 、 !=的优先级相同,且前面四个的优先级高于后面两个。关系运算符的优先级高于赋值运算符,低于算术运算符。,考点2 关系运算符,由关系运算符构成的表达式,称为关系表达式。关系运算符两边的对象可以是c语言中任何合法表达式,例如: ab, a(b=1), (a=c)!=(b=d), aA 关系运算的值为逻辑值,因而只有“1”、“0”两种取值。例如: int i=4,j=3,k,t; k=ij; ij为1,所以k的值为1。 t=ijk; 关系运算符是左结合性,因此,先计算ij,值为1,再计算1k,值为0,所以t为0。 注意:对于两个浮点数,应避免使用x=y这样的关系表达式。,考点3 关系表达式,考点4:逻辑运算符,逻辑运算符有三种:!,&,|。其中!运算符优先级最高,|优先级最低,&次之。逻辑运算符的结合性从左到右。,2、逻辑运算符和逻辑表达式,考点4:逻辑表达式,由逻辑运算符构成的表达式称为逻辑表达式。与关系运算符一样, 逻辑运算符两边的运算对象也可以是c语言的任意合法表达式,逻辑表达式的值也只有“1”和“0”两种。 逻辑运算真值表如下:,关于逻辑表达式有以下两点说明: 1)数学关系式aa。,2)逻辑表达式求解过程中,并不是所有的逻辑运算符都被执行,只有必须执行该逻辑运算符才能求出表达式的值的解时才执行。例如,假设 a=0,b=0,则对于下面的两个逻辑表达式: a+ & b+ 系统执行时先计算表达式a+的值,值为0,则系统判断整个逻辑表达式的值为0 ,跳过b+不执行,因此计算结束后,a为1,b为0。 +a | +b 表达式+a的值为1,则系统判断整个逻辑表达式的值为1,仍然跳过+b不执行,因此计算结束后,a为1,b为0。,考点5、条件运算符和条件表达式,条件运算符的形式为“?:”,优先级别仅高于赋值运算符。其形式为: 表达式1:表达式2?表达式3,当“表达式1”的值为真时,计算“表达式2”的值,并将该值做为整个条件表达式的值,当“表达式1”为假时,计算“表达式3”的值,并将该值做为整个条件表达式的值。 例如:max=(ab)?a:b,*考点7、if语句的三种形式及其执行过程,1)单条if语句 if(表达式)语句; 例如: if(a0)a=1; 2)if-else语句 if(表达式) 语句 1; else 语句2; 例如 if(a0)a=1; else a=-1;,5、if语句,3)if-else-if语句 if(表达式1) 语句1; else if(表达式2) 语句2; else if(表达式m-1) 语句m-1; else 语句m;,例如: if(a0) a=1; else if (a=0) a=0; else a=-1;,三种形式的if语句中,在if后都有表达式,该表达式为c语言中任意合法表达式,一般为逻辑表达式或关系表达式,表达式之后是一条语句,而且仅可以是一条语句, 称为if子句或else子句。如果该子句中含有两个以上的语句,必须用花括弧括起来,因为复合语句是被当成一条语句来处理。 说明:1)对于第2种和第3种if语句, 不要将其误认为是多条语句(if语句,else-if语句,else语句),它们都属于第一条if语句。 2)每个else前必须有一个分号,整个if语句结束处有一个分号,这是c语言的语法要求。,例如:if(a0)a=1; else a=-1; 在a=1和a=-1后都要有分号。 3)else不是一条独立的语句,它只是if语句的一部分,必须和if配对使用。,if语句和else语句后的表达式是c语言中任意合法表达式,因此也可以是if语句本身。即在if语句中又包含一个或多个if子句,这称为if语句的嵌套。一般形式如下: if(表达式1) if(表达式2)语句1; else 语句2; else if(表达式3) 语句3; else 语句4; 注意:else语句总是与它上面离它最近的if语句配对。,考点8、嵌套的if语句,8、switch语句,格式: switch (表达式) case 常量表达式1: 语句组1; break; case 常量表达式2: 语句组2; break; case 常量表达式n: 语句组n; break; default: 语句组n+1; ;,考点9:switch语句的形式,说明: (1)switch、case、default都是c语言的关键字。 (2)switch后的表达式可以是任何类型。 (3)关键字case和常量表达式之间一定要有空格。例如:case 1 不可以写成case1。各常量表达式的值应该各不相同,并且类型必须与switch后面的表达式的类型一致。case语句标号后的语句序列可以是一条或多条语句,必要时也可以省略不写,即由多个case共同执行一组语句。 (4)default代表所有case标号之外的标号。default标号可以出现在switch语句体的任何位置,也可以不出现。,考点10、switch语句的执行过程,switch语句按照以下步骤执行: 1)计算switch后表达式的值。 2)在switch语句体内寻找与该值吻合的case标号,根据匹配情况,有以下三种执行方式: 有匹配的case标号。则执行该标号后的各条语句,包括其后所有的case和default标号后的语句,直到switch语句体结束或者遇到break语句为止; 没有匹配的case标号,但存在default标号。则执行该default标号后所有的语句,直到switch语句体结束或者遇到break语句为止; 没有匹配的case标号,也没有default标号,跳出switch语句体。,例题,1、下列选项中,当 x 为大于l 的奇数时,值为 0 的表达式是( )。 A)x%2= =1 B)x/2 C)x%2! =0 D)x%2= =0,2、下列关于逻辑运算符两侧运算对象的叙述中正确的是( )。 A)只能是整数 0 或1 B)只能是整数 0 或非0整数 C)可以是结构体类型的数据 D)可以是任意合法的表达式,3、设有条件表达式:(EXP)?i+ +:j-,则下列表达式中与(EXP)完全等价的是( ) 。 A)(EXP= =0) B)(EXP! =0) C)(EXP= =1) D)(EXP! =1),4、在下列给出的表达式中,与 while(E)中的(E)不等价的表达式是( )。 A)(!E= =0) B)(E0E0) C)(E= =0) D)(E! =0),5、若有定义 int x,y; 并已正确给变量赋值,则下列选项中与表达式(x-y)?(x+ +):(y+ +)中 的条件表达式(x-y)等价的是( )。 A)(x-y0) B)(x-y0) D)(x-y= =0),6、当把四个表达式用作 if语句的控制表达式时,有一个选项与其他三个选项含义不同, 这个选项是( )。 A)k%2 B)k%2= =1 C)(k%2) ! =0 D)!k%2= =1,7、已有定义:char c;,程序前面已在命令行中包含 ctype.h 文件,不能用于判断 c中的字 符是否为大写字母的表达式是( )。 A)isupper(c) B)A=c=Z C)A=c&c=Z D)c=(z-32)&(a-32)=c,8、设有定义:int a=2,b=3,c=4;,则下列选项中值为 0 的表达式是( )。 A)(!a= =1)&(!b= =0) B)(ab)&! c 1 C)a & b D)a(b+b)&(c-a),9、在嵌套使用 if语句时,C 语言规定 else总是( )。 A)和之前与其具有相同缩进位置的 if配对 B)和之前与其最近的 if配对 C)和之前与其最近的且不带 else的 if配对 D)和之前的第一个 if配对,10、下列计算公式: x (x=0) y= -x (x=0) y=sqrt(x); B)y=sqrt(x); else y=sqrt(-x) ; if(x=0) y=sqrt(x) ; D)y=sqrt(x=0? x:-x); if(x0) y=sqrt(-x);,11、设变量 x 和 y均已正确定义并赋值。下列 if语句中,在编译时将产生错误信息的是 ( )。 A)if(x+ +); B)if(xy,12、有下列程序: main( ) int a=0,b=0,c=0,d=0; if(a=1) b=1;c=2; else d=3; printf(“%d,%d,%d,%dn“,a,b,c,d); 程序输出( )。 A)0,1,2,0 B)0,0,0,3 C)1,1,2,0 D)编译有错,14、下列叙述中正确的是( )。 A)break 语句只能用于 switch 语句 B)在 switch语句中必须使用 default C)break 语句必须与 switch 语句中的case 配对使用 D)在 switch语句中,不一定使用 break 语句,15、有下列程序: main( ) int k=5,n=0; do switch(k) case 1: case 3:n+ =1;k-;break; default:n=0;k-; case 2: case 4;n+ =2;k-;break; printf(“%d“,n); while(k0 程序运行后的输出结果是( )。 A)235 B)0235 C)02356 D)2356,16、若有定义:float x=1.5;int a=1,b=3,c=2;则正确的 switch 语句是( )。 A)switch(x) case 1.0:printf(“* n“); case 2.0:printf(“* n“); B)switch( (int)x ); case 1:printf(“*n“); case 2:printf(“*n“); C)switch(a+b) case 1:printf(“*n“); case 2+1:printf(“* n“); D)switch(a+b) case 1:printf(“* n“); case c:printf(“* n“);,17、有下列程序: main( ) int k=5,n=0; while(k0) switch(k) default:break; case 1: n+ =k; case 2: case 3: n+ =k; k-; printf(“%dn“,n); 程序运行后的输出结果是( )。 A)0 B)4 C)6 D)7,填空,1、已定义 char ch=$; int i=1,j;,执行 j =!ch&i+ +以后,i 的值为 ( ) 。,2、下列程序用于判断 a、b、c 能否构成三角形,若能,输出 YES,否则输出 NO。当给 a、 b、c 输入三角形三条边长时,确定 a、b、c 能构成三角形的条件是需同时满足三个条 件:a+bc,a+cb,b+ca。请填空。 main( ) float a,b,c; scanf(“%f%f%f“, /*a、b、c 不能构成三角形*/ ,3下列程序的功能是输出 a、b、c 三个变量中的最小值。请填空。 #include main( ) int a,b,c,t1,t2; scanf(“%d%d%d“, ,4下列程序运行后的输出结果是 _ 。 main( ) int x,a=1,b=2,c=3,d=4; x=(ax)?x:d; printf(“%dn“,x);,5下列程序运行后的输出结果 _ 。 main( ) int a=1,b=2,c=3; if(c=a) printf(“%dn“,c); else printf(“

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论