C语言控制语句:选择结构(分支结构)
本篇文章重点介绍C语言中选择(分支)结构的用法简介以及相关实例。
1.if 语句
if 是最基础的分支语句(branching statement),或选择语句(selection statement),可以简单的将if语句理解为一个交叉点,程序在两条分支中选择一条执行。
语法
if( expression )
statement
如果表达式(expression)为真(非0),那么程序将执行statement,否则跳过statement。
flowchat
st=>start: Start
e=>end: End
op=>operation: action
cond=>condition: expression
st->cond
cond(no)->e
cond(yes)->op->e
if中的statement 可以是一条简单语句也可以是由花括号括起来的复合语句。
if(a>b)
printf("%d",a); //简单语句
if(a>b)
{ //复合语句
b++;
printf("%d%d",a,b);
}2.if else 语句
if 语句可以让程序选择一条语句执行或者跳过。此外C还提供了if else语句让程序在两条(段)语句之间进行选择(与双目运算符? : 类似)
语法
if (expression)
program statement 1 // expression 为真则执行此条语句
else
program statement 2 //expression 为假则执行此条语句
//与之类似的双目运算符
condition ? expression1 : expression2 //condition 为真返回expression 1,为假返回expression 2
flowchat
st=>start: Start
e=>end: End
op1=>operation: action1
op2=>operation: action2
cond=>condition: expression
st->cond
cond(yes)->op1->e
cond(no)->op2->eif else 嵌套(Nested)
程序可以按照顺序从上到下对嵌套的的if else 语句依次进行判断,如果没有花括号,那么每一个else对应着它上方离它最近的if。
if (expression 1)
program statement 1
else
if (expression 2)
program statement 2
else
if (expression 3)
program statement 3
else
program statement 4
3.双目运算符(条件运算符:conditional expression)
双目运算符可以看做 if else 语句的一种便捷的表达方式,其形式如下condition ? expression1 : expression2
如果condition为真,则该表达式的值与expression1的相同,反之则与expression2的相同。
Example
(5 > 3) ? 1 : 2 值为1
(5 < 3) ? 1 : 2 值为2
4.Switch
4.1 switch介绍及语法
使用双目运算符和if语句可以很容易实现二选一程序的编写,但是如果我们需要进行多选一的话,if等语句明显略显吃力,此时我们引入Switch语句来方便我们编写代码。
switch 在圆括号中的表达式的值是一个整数值(包括char类型),case的标签也必须是整数类型(同样包括char)的常量或者常量表达式。
switch结构如下(其中break可以跳出switch,如果没有break语句,那么程序就会从匹配的case执行到switch的末尾):switch (expression)
{
case value1:
program statement
break;
case value2:
program statement
break;
case valueN:
program statement
break;
default:
program statement
break;
}
4.2 switch多重标签(case)
例如在统计单词中元音字母个数时,我们可以使用如下多重标签。switch (ch)
{
case 'a' :
case 'A' : a_ct++;
break;
case 'e' :
case 'E' : e_ct++;
break;
case 'i' :
case 'I' : i_ct++;
break;
case 'o' :
case 'O' : o_ct++;
break;
case 'u' :
case 'U' : u_ct++;
break;
default : break;
} // end of switch