分支结构
C语言中有三大控制结构:
顺序、选择、循环
顺序结构:
语句一条一条从上至下,从左至右执行的。
选择(分支):
if/switch
循环:
while、do while 、for
-
if语句
if语句有四种基本形式:
(1) if(表达式)
{
语句;
}只要“表达式”的值为真(非0),那么就会去执行语句.
“表达式”:任意C语言中合法的表达式都可以。
“语句”:分为单语句和复合语句。
“单语句”:只有一个;语句。
例子:
if(a > b)
c = a - b;"复合语句":用{}括起来的语句 if(a > b) { c = a - b; }
(2) if(表达式)
{
语句1;
}
else
{
语句2;
}当“表达式”为真(非0)时,执行语句1,否则执行语句2。
“表达式”:任意C语言中合法的表达式都可以。
“语句”:分为单语句和复合语句。例子: int a,b; if(5 > 3) { a = 1; b = 2; } else { a = 3; b = 4; } //a = 1,b = 2 int a,b; if(5 > 3) { a = 1; b = 2; } else a = 3; b = 4; //a = 1,b = 4
(3) if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
…
else
{
语句n;
}先判断表达式1是否为真,为真执行语句1,为假就继续去判断表达式2,如果else if后面的某一个
表达式的值为真,就去执行else if后面对应的语句,如果没有任何一个表达式的值为真则去执行
语句n。
else可以省略不写。例子: 根据如下的代码片段,试着写出number与cost之间的数学关系式: if(num > 500) { cost = 0.15; } else if(num > 300) { cost = 0.10; } else if(num > 100) { cost = 0.075; } else if(num > 50) { cost = 0.05; } else { cost = 0; }
(4) if语句的嵌套:“条件里面还有条件”
if()
{
if()
{
}
else
{
}
}
else
{
if()
{}
else
{}
}else与if的匹配的问题: else总是与它上面的,最近的,同级的,未匹配的if语句配对。
-
switch(开关)语句
形式:
switch(表达式)
{
case 常量表达式1:
语句1;
case 常量表达式2:
语句2;
…
case 常量表达式n:
语句n;
default:
语句m;
}规则:
拿表达式的值与case后面的常量表达式的值进行比较,一旦值相等,则从那个case后面开始执行
直到遇到break或者switch结束,如果没有与任何一个case后面的常量表达式的值相匹配,
则匹配default。重点:
(1) switch后面的表达式的值必须为一个整数值(整型、字符型、枚举型),是一个可以列举的值
(2) 常量表达式的值也必须为一个整数,且每个case后面的常量表达式的值必须各不相同。
(3) 各个case与defalut出现的次序不影响匹配结果,一旦匹配成功,就从此往下执行。例子: switch(5) { default: printf("5\n"); break; case 1: printf("1\n"); break; case 2: printf("2\n"); break; case 3: printf("3\n"); case 4: printf("4\n"); }
(4) 语句可以省略掉的,意思就是多个case可以共用一组语句。
例子:
switch(a)
{
case 1:
case 2:
case 3:
语句1;
break;
default:
语句2;
}
//a的值为1或者2或者3都会执行语句1(5) break是用来退出switch语句的。