if语句
if语句用于判定所给定的条件是否满足,程序根据判定的结果决定所执行的操作。c语言提供如下三种形式的if语句。
1.if形式
if形式语句如下:
if(表达式)
语句
不带else子句的if语句适合解决单分支的选择问题,其流程图如下:
图 1. 单分支选择结构
例如:
if(a>b)
max=a;
上述语句语句的含义是:如果“a>b”,则将变量a的值赋给变量max。
初学者使用if语句时经常犯的错误之一是将
if(a==5)
写成:
if(a=5)
后者条件表达式结果为5。因此,对这条If语句而言,条件总是为真。
2.if-else形式
if-else形式语句如下:
if(表达式)
语句1
else
语句2
这种带else子句的if语句用来解决双分支选择问题,流程图如下:
图 2. 双分支选择结构
例如:
if(a>b)
max=a;
else
max=b;
上述语句语句的含义是:如果“a>b”,则将变量a的值赋给变量max;否者将变量b的值赋值给max。
3.else-if形式
if(表达式)
语句1
else if(表达式2)
语句2
…
else if(表达式n)
语句n
else
语句n+1
或者可以写成:
if(表达式)
语句1
else
if(表达式2)
语句2
…
else
if(表达式n)
语句n
else
语句n+1
如果表达式1为真,则执行语句1,否则如果表达式2为真,则执行语句2,……,如果if后的所有表达式均不为真,则执行语句n+1。这种形式的if语句可以解决多分支选择问题。
其流程图如下:
switch语句
当问题需要讨论的情况较多(三个或三个以上)时,通常使用switch语句。switch语句就像多路开关一样,使程序控制流程形成多个分支,根据一个表达式可能产生不同的结果值,选择其中一个或几个分支语句去执行。因此,switch语句常用于各类分类统计,菜单等程序设计。switch语句的一般形式如下:
switch(表达式)
{
case 常量表达式 1:
语句序列 1;
case 常量表达式 2:
语句序列 2;
…
case 常量表达式 n:
语句序列 n;
default:
语句序列 n+1;
}
计算 switch后表达式的值,并逐个与其后的常量表达式进行比较。当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如果表达式的值与所有case后的常量表达式均不相同,则执行default后的语句。
switch后的圆括号内表达式的值应该是整型,字符型或枚举类型。每个case后的常量表达式的类型必须与其匹配。
循环结构
while语句
while语句的一般形式为:
while(表达式)
循环体语句
计算表达式的值时,当值为非0(即为真)时,表示条件成立,则执行循环体语句,直到表达式的值为0(即为假)时结束循环的执行。如果循环体语句是由两条或两条以上语句组成,则需要将循环体语句用一对花括号{}括起来。所以执行while语句时是先判断后执行。
流程图如下:
do…while语句
do…while语句的一般形式为:
do
{
循环体语句
}while(表达式)
执行循环体语句,然后判断while后的表达式的值。当表达式的值为非0(即为真)时,则重复执行循环体语句,直到表达式的值为0(即为假)时结束循环的执行。如果循环体语句有两条或两条以上的语句组成,则需要将循环体语句用一对花括号{}括起来。如果循环体语句只有一条语句,可以不用花括号{}括起来。与while语句不同的是,do…while语句是先执行后判断,不管表达式的值如何,循环体语句至少会执行一次。
do…while语句的流程图如下:
for语句
在c语言程序中,for循环的使用频率很高。for循环一般形式如下:
for(表达式1;表达式2;表达式3)
循环体语句
功能:
(1)首先计算表达式1的值,并转向步骤(2)。通常表达式1的作用初始化循环变量,即为循环变量赋初值。
(2)计算表达式2的值,若表达式2的值为真,则执行一次循环体语句,并转向步骤(3);若表达式2的值为假,则结束循环。通常给出循环重复执行的判定条件。
(3)计算表达式3的值,转回重复步骤(2)。通常表达式3的作用是循环控制变量增值。
要注意哦,表达式与表达式之间是分号;不是逗号。
for循环流程图如下: