当前位置:
文档之家› 计算机二级等级考试C语言选择结构的讲解
计算机二级等级考试C语言选择结构的讲解
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式 4.1.2 逻辑表达式 1.逻辑运算符 2.逻辑表达式 注意:由逻辑运算符&&和||构成的逻辑表达式,在特 殊情况下会产生“短路”现象。 (1)由逻辑运算符&&构成的逻辑表达式,在已经确定 一个运算对象的值为0时,其逻辑表达式的值即为0,此时 不再处理另一个运算对象。 例如:执行:a=-1; b=5; ++a&&b--; 结果为:a =0 b=5
从左向右
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式 4.1.2 逻辑表达式 1.逻辑运算符 各逻辑运算符的运算规则如表所示:
数据a
1 1 0 0
数据b
1 0 1 0
a&&b
1 0 0 0
a||b
1 1 1 0
!a
0 0 1 1
!b
0 1 0 1
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式 4.1.2 逻辑表达式 1.逻辑运算符 2.逻辑表达式 由逻辑运算符将两个表达式连接起来的有意义的式子称 为逻辑表达式。 例如:!a+b&&c a||b= =c a>0||b<5 a++&&b-逻辑表达式的值也是一个逻辑值。如果逻辑运算的对象 是一个数值型数据,则该数值型数据应被看作逻辑值,C 语言中,非零值看作“真”,零值看作“假”。
(1)if与else的配对关系从最内层开始,else总是与离它最近的未曾配对 的if配对。 (2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。 (3)如果if与else的个数不相同,可以用花括号来确定配对关系。
例如:
if (表达式1 ) { if(表达式2 ) 语句1 } else 语句2 这时花括号限定了内嵌if 语句的范围,因此else与第一个if配对。
== !=
大于 大于等于 小于 小于等于 等于 不等于
7
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式 4.1.1 关系表达式 1.关系运算符 2.关系表达式 由关系运算符将两个表达式连接起来的有意义的式子 称为关系表达式。 例如:x>=60 a+b<c a>b= =c b+4>c-6 关系表达式的值是一个逻辑值,即“真”或“假”。 C语言中,用1表示“真”,用0表示“假”。
第4章 选择结构程序设计
4.3 条件表达式 条件运算符“?”和“:”两个符号组成。 由条件运算符构成的条件表达式的一般形式是: <表达式1>?<表达式2>:<表达式3>; 条件运算符的含义是:先求表达式1的值,如果为真, 则求表达式2 的值并把它作为整个表达式的值;如果表 达式1 的值为假,则求表达式3 的值并把它作为整个表 达式的值。
第4章 选择结构程序设计
4.6 应用举例 Y 例4.5 输入三个数,按由小到大的顺序输出。 交换a,b 分析:
已知:输入的三个数(分别用a,b,c来存放)。 求:由小到大的顺序输出的三个数。 处理:(1)a,b中的小者存入a,大者存入b。 (2)a,c中的小者存入a,大者存入c。 (3)b,c中的小者存入b,大者存入c。
4.4 复合语句与空语句 4.4.1 复合语句 复合语句是由左右花括号括起来的多条语句,一个复合语句 在语法上等同于一个语句。 复合语句的一般形式如下: { 说明部分; 语句部分 } 在程序中,凡是单个语句能够出现的地方,都可以出现复合 语句。一个复合语句又可以出现在其他复合语句内部。
第4章 选择结构程序设计
第4章 选择结构程序设计
4.5 开关语句 说明: (5)由于switch语句中的“case 常量表达式”部分只起 标号的作用,而不进行条件判断,所以在执行完某个 case后的语句后,将自动转到该语句后面的语句去执行, 直到遇到switch语句的右花括号或break语句为止,而 不再进行条件判断。如果在执行完一个case分支后,要 跳出switch语句转到下一条语句执行,可在一个case结 束后、下一个case开始前插入一个break语句。程序一 且执行到braek语句,将立即跳出switch语句。
4.5 开关语句 说明: (6)多个case可以共用一组执行语句。例如: switch(n) { case 1: case 2: case 3: x=3; }
第4章 选择结构程序设计
4.5 开关语句 注意: (1)switch的表达式后不能有“;”。 (2)case和default与其后面的常量表达式间至少有一个空格。 (3)switch语句可以嵌套,break语句只跳出它所在的switch 语句。 (4)default语句可以省略。
第4章 选择结构程序设计
4.2 if语句 用流程图表示: 4.2.1 简单if语句 真 注意: (1)表达式是判断的条件,一般是关系表达 式或逻辑表达式,也可以是其他表达式。 语句1 (2)条件执行语句中“else 语句2;”部分 是选择项,可以缺省,此时条件语句变成: if(表达式) 语句1; 其功能是:若表达式的值为真,则执行语句1, 否则跳过语句1继续执行。
第4章 选择结构程序设计
4.3 条件表达式
例4.3 用条件表达式改写例4.1(输出两个数中的较大者)。 程序: main() { int a,b,max; scanf("%d%d",&a,&b); max=(a>b)?a:b; printf("max=%d\n",max); }
第4章 选择结构程序设计
例如: switch(n) { case 1: x=1; case 2: x=2; } 当n=1时, 将连续执行下面两个语句: x=1; x=2; switch(n) { case 1:x=1; braek; case 2:x=2; braek; } 当n=1时, 将只执行一个语句: x=1;
第4章 选择结构程序设计
例4.4 给变量a,b,c输入整数,根据a的值确定对b、c 的运算:
当a =1时:计算b+c的值。当a=2时:计算b-c的值。 当a=3时:计算b*c的值。当a=4时:计算b/c的值。 其他值时:不做任何操作。
程序:
main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); switch(a) { case 1:printf("%d+%d=%d\n",b,c,b+c); break; case 2:printf("%d-%d=%d\n",b,c,b-c); break; case 3:printf("%d*%d=%d\n",b,c,b*c); break; case 4:printf("%d+%d=%d\n",b,c,b/c); } }
Y 交换a,c
开始 输入a,b,c
a<b
N
a<c
N
Y 交换b,c
流程图:
b<c
N
输出a,b,c 结束
第4章 选择结构程序设计
4.6 应用举例 Y 例4.5 输入三个数,按由小到大的顺序输出。 交换a,b 程序:
#include "stdio.h" main() { int a,b,c,t; printf("a,b,c=?"); scanf("%d,%d,%d",&a,&b.&c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} printf("%d,%d,%d",a,b,c); }
假
表达式
第4章 选择结构程序设计
4.2 if语句 4.2.1 简单if语句 注意: (3)如果语句1或语句2有多于一条语句要执行时,必须使用 “{“和”}”把这些语句包括在其中,构成一个复合语句, 此时条件语句形式为: if(表达式) { 语句组1; } else { 语句组2; }
例4.1 输出两个数中的较大者。 程序1: main() { int a,b,max; scanf("%d%d",&a,&b); if(a>b) max=a; else max=b; printf("max=%d\n",max); } 程序2: main() { int a,b,max; scanf("%d%d",&a,&b); max=a; if(max<b) max=b; printf("max=%d\n",max); }
第4章 选择结构程序设计
4.1 关系表达式和逻辑表达式 4.1.1 关系表达式 1.关系运算符 关系运算符是比较两个操作数大小的符号。 两个操作数一般为数值型数据。 Turbo C的关系运算符及其优先级、结合律如表所示:
运算符 功能 优先级 (值小的优先级高) 6 从左向右 结合律
> >= < <=
例4.2 对任意x,根据以下函数关系求对应y的值。 -1 (x<0) 程序: y= 0 (x=0) main( ) 1 (x >0) { int x,y; scanf("%d",&x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf("x=%d,y=%d\n",x,y); } 输入:-3 结果:x=-3,y=-1 输入:4 结果:x=4,y=1
switch(表达式) { case 常量表达式1:语句1; case 常量表达式2:语句2; … case 常量表达式n:语句n; default:语句n+1; }