Module4 - 选择结构程序设计
作者:
Felix_16
,
2024-04-06 12:15:45
,
所有人可见
,
阅读 4
if语句在嵌套时,为了避免嵌套的if-else语句的二义性
C语言规定:else总是与在其之前最近的未匹配的if语句组成配对关系
switch语句的格式:
switch(表达式)
{
case 常量表达式1: 语句1; break;
case 常量表达hi2: 语句2; break;
...
default: 语句组n; break;
}
若switch后面括号中的表达式的值(可以是int、char、枚举型中的任意一种),和某个case后面的常量表达式的值相同时,就执行该case后面的语句
【注意事项】
1.如果没遇到break语句,则后面的情况将继续执行
2.如果没有任何一个case相匹配时,则执行default语句,并依次执行default后面的语句
3.case和default语句的先后顺序,会影响程序的执行效果
【错题】
1.执行语句int k = 0; if(1) k = 1;
得到的k的值为?
执行语句int k = 0; if(k = 0) k = 1;
得到的k的值为?
2.执行以下语句,得到的结果为?
int main()
{
int a = 0;
switch(a)
{
case 0: printf("0");
case 2: printf("2");
default: printf("?");
case 1: printf("1");
case 3: printf("3");
}
return 0;
}
【附加】
(1)假设将a = 0,改为a = 1,输出结果为?
(2)假设将a = 0,改为a = 5,输出结果为?
3.执行以下语句,得到的结果为?
int main()
{
int a = 0;
switch(a)
{
case 0: printf("0");
case 2: printf("2"); break;
default: printf("?"); break;
case 1: printf("1");
case 3: printf("3");
}
return 0;
}
【附加】
(1)假设将a = 0,改为a = 1,输出结果为?
(2)假设将a = 0,改为a = 5,输出结果为?
【答案】
1. 1(因为if里面判断表达式的值为1,即为真,因此执行k = 1)
0(因为if里面判断表达式的值为0,即为假,因此不执行k = 1)
2. 02?13(当没有break语句时,后面的情况将依次执行)
【附加】
(1)13(理由同上)
(2)?13(case从上往下看,没有满足的情况,因此从default语句开始依次往后执行)
3. 02
【附加】
(1)13
(2)?