第4章选择(分支)结构程序设计(精)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章选择(分支)结构程序设计 C语言中实现选择结构的控制语句有两种:条件分支语句if和开关分支语句switch。
一.if语句的三种形式:
1、if(表达式)
语句;
即:条件为真,执行语句1
2、if(表达式) /* if 和 else是关键字,要小写 */
语句1;
else
语句2;
即:条件为真,执行语句1,否则执行语句2
3、 if(表达式1)
语句1;
else if(表达式2)
语句2;
else if(表达式3)
语句3;
…
else if(表达式n)
语句n;
注意以下几点:
①if 后面的条件可以是如下类型:
● 关系表达式,如x>y
● 逻辑表达式,如x>y&&y>z
● 算术表达式,如x+y
● 赋值表达式,如x=y
● 变量,如x
● 常量,如-5
②如果语句1或语句2是一条语句,则{}一对花括号可以省略③if….else 是一条语句,else 不能单独出现,要注意else 与 if的搭配问题(既:else与其上面最近的且没使用的if搭配)
二.开关分支语句switch
1、形式
switch(表达式)
{ case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
case 常量表达式3: 语句3;break;
……
case 常量表达式n: 语句n;break;
default : 语句n+1;
}
2、执行过程
当表达式的值等于“常量表达式1”时,执行语句1;
当表达式的值等于“常量表达式2” 时,执行语句2;
……
当表达式的值等于“常量表达式n”时,执行语句n;
当表达式的值与“常量表达式1、常量表达式2……常量表达式n”谁都不等时,就执行default后的语句.
注意以下几点:
1、表达式应该有括号,注意大括号一定要有并且注意配对。
2、表达式可以是整型常量或变量、字符常量或变量、关系表达式、逻辑表达式、整型的算术表达式,总之是整数,但是通常用整型或字符型。C语言计算表达式的值,然后找常量表达式的值匹配。
3、 break 是C语言的一种语句,其作用是跳出switch语句。如果没有break,将会从某个语句组起顺次执行完所有的语句组。有时我们希望这样,有时我们不希望这样。因此可以通过break调整程序的走向。
4、switch和case是关键字,要小写
5、case要和后面的常量表达式用空格分开,且这个常量表达式必须是整型常量或字符常量,不是变量。
6、default可以放在任何位置,不一定在最后,也可以没有
练习题
一、选择题
1.假定所有变量均已正确定义,下列程序段运行后y的值是()。
int a=0, y=10;
if (a=0) y--; else if(a>0)y++;else y+=y;
A. 20
B. 11
C. 9
D. 0
2.假定所有变量均已正确定义,下列程序段运行后x的值是()。
a=b=c=0; x=35;
if (!a) x--; else if(b); if(c) x=3; else x=4;
A. 34
B. 4
C. 35
D. 3
3.下面的程序片段所表示的数学函数关系是()。
y=-1;
if(x!=0) if(x>0) y=1; else y=0;
4. 假定i和j为int型变量,则执行以下语句后j的值为()。
int i=1;
switch(i++){
case 1: for(j=0;j<9;j++) if (i==1) break;
case 2: for(j=1;j<10;j++) if (i==2) break;
case 3: printf(“i=%d\n”,i);
}
A. 0
B. 1
C. 9
D. 10
5. 在C语言的语句中,用来决定分支流程的表达式是()。
A. 可用任意表达式
B. 只能用逻辑表达式或关系表达式
C. 只能用逻辑表达式
D. 只能用关系表达式
4.为了避免嵌套的if-else语句的二义性,C语言规定else总是与()组成配对关系。
A.缩排位置相同的if
B.在其之前未配对的if
C.在其之前未配对的最近的if
D.同一行上的if
5.逻辑运算符两侧运算对象的数据类型()。
A.只能是0或1
B.只能是0或非0正数
C.只能是整型或字符型数据
D.可以是任何类型的数据
6.以下关于运算符优先顺序的描述中正确的是()。
A.关系运算符<算术运算符<赋值运算符<逻辑与运算符
B.逻辑与运算符<关系运算符<算术运算符<赋值运算符
C.赋值运算符<逻辑与运算符<关系运算符<算术运算符
D.算术运算符<关系运算符<赋值运算符<逻辑与运算符
7.下列运算符中优先级最高的是()。
A.< B.&& C.+ D.!=
8.选择出合法的if语句(设int x,a,b,c;)()。
A.if(a=b) c++;
B.if(a=