程序语句从大的方向来划分,只有三种:
顺序执行语句、分支语句(跳过部分执行)、循环语句(往复执行),一下就对C语言中的具体语句进行分析,希望对看到本文的您有所帮助,不足之处望不吝赐教。
1. 空语句
C语言中最简单的语句就是空语句,它由分号“;”构成。空语句本身不执行任何操作,但也有它存在的价值,某些情况下,它的存在会使整个程序的格式更协调。
2. 分支语句(if与switch)
2.1if语句
2.1.1 形式
/*
* if语句形式
*/
if (cond)
{
statement1;
}
else
{
statement2;
}
2.1.2含义
上述代码中,cond表示条件,它的值可以是任何能够产生整型结果的表达式--零值表示“假”,非零值表示“真”;statement1和statement2表示代码块。
2.1.3建议
无论statement1或statement2的语句块包含多少条语句,都在其外面加上“{}”,这是一个好的习惯,避免由于某种原因写出偏离原意的代码。
2.2switch语句
2.2.1形式
/*
* switch语句形式
* 每个case一个statement语句块
*/
switch(command){
case A:
stament1;
break;
case B:
stament2;
break;
case C:
stament3;
break;
default:
stament4;
break;
}
该switch流程表示当command为A时则执行stament1,然后跳出不再执行其他语句。当希望程序只执行某个case时,可以使用此方法。此时每个标签处的结尾必须显式指明break以使流程退出,否则程序将继续执行其他标签。default表示默认流程,即command的值即不为A也不为B或C时执行。
switch语句还有如下形式:
<pre name="code" class="cpp">/*
* switch语句形式
* 多个case执行同一个statement语句块
*/
switch(command){
case A:
case B:
case C:
stament1;
break;
case D:
statement2;
break;
default:
stament4;
break;
}
该switch语句表示当command的值为A、B、C中的任意一个时,均执行相同的语句块staments。
2.2.2建议
switch语句中的command应该为能表示整数的值(如int或char);在每个switch语句末尾加上default是个好习惯,这样我们可以在程序中检测到任何非法值。
3. 循环语句(for、while)
每个循环(for循环或者while循环)都有一个共同的特点:
拥有循环初始化语句、循环执行的条件、使循环趋于结束的条件(称为调整语句)、循环体,下面结合实际的循环简要分析下:
3.1for循环
/*
* for循环
*/
for(exp1;exp2;exp3)
{
statement;
}
for循环语句的执行流程为:
exp1; exp2; {statement;exp3;exp2;} {statement;exp3;exp2;} {statement;exp3;exp2} {...}
由此流程可知,exp1,exp2最先执行且exp1只执行一次。以后每次的循环都是先执行循环体statement,然后执行exp3,最后执行exp2判断是否继续满足循环执行的条件,满足条件则进行下一轮的循环,直到exp2的条件不再满足循环继续执行下去的条件。
3.2while循环
3.2.1while语句
/*
* while循环
*/
while(exp)
{
statement;
}
该循环语句有两层含义:
其一:exp为循环执行条件;statement为循环体,调整语句(循环趋于结束的条件)包含在循环体内。示例如下:
/*
* while实例一
*/
int i = 0;//初始化语句
while(i < 10)/*循环执行条件*/
{
statement;//循环体主体部分
i++;//调整语句-使循环趋于结束
}
其二:exp2为循环执行条件与调整语句,statement为循环体。示例如下:
/*
* while实例二
*/
int i = 0;//初始化语句
while(i++ < 10)/*循环执行条件;调整语句-循环趋于结束条件*/
{
statement;//循环体
}
3.2.2do-while语句
/*
* do-while 循环
*/
do{
statement;
}while(exp)
该循环也包含两层含义:
其一:statement为循环体,调整语句也包含在循环体中;exp为循环执行条件。示例如下:
/*
/*
* do-while实例一
*/
int i = 0;//初始化语句
do{
statement;//循环体主体
i++;//调整语句-使循环趋于结束
}while(i < 10)/*循环执行条件*/
其二:statement为循环体;exp为循环执行条件,调整语句也包含其中。实例如下:
/*
* do-while实例一
*/
int i = 0;//初始化语句
do{
statement;//循环体主体
i++;//调整语句-使循环趋于结束
}while(i < 10)/*循环执行条件*/
3.2.3while 与 do-while两者异同
两者的相同点是:当两者都满足循环的初始条件值时则后来的执行流程完全一致。
两者唯一的区别是:当初始条件不满足循环时的处理机制不同:
while循环中当exp初始值不满足循环执行条件则不进入循环体。
do-while循环中,当exp初始值不满足循环执行条件时至少会执行一次循环。
3.3for与while两者差异
两者的相同点:
两者都用于循环处理,基本流程相同,都包含初始化语句、循环体、循环执行条件、调整语句;两者对break语句的处理机制也相同,直接退出循环不进行其他操作。
两者的主要差别就是对循环中continue语句的处理机制不同:
for循环中,当遇到continue语句时,会执行调整语句。
while循环中,当遇到continue语句时,不会执行调整语句。
4跳转语句(continue、break)
continue语句主要用于循环语句中,当当前循环位置处的内容不是期望的内容而又想继续执行其他循环时可以使用continue语句。
break语句为退出语句块,主要有以下两大用途:
一.退出for或while循环:比较彻底,不执行额外操作。
二.退出if、switch分支语句,也比较彻底,不执行额外操作。
5.goto语句
使用规则:
goto 语句标签;
goto语句可以跳转到函数中的任一标签处,使用时特别简单方便,只需要在需要跳转到的地方定义一标签label,再执行语句“goto label;”正是由于使用goto的方便,所以新人往往容易形成对它的依赖,这是一个不好的习惯,其原因在于goto.使用不当会极大破坏C程序的结构,它可能跳过变量的初始化、重要的计算语句等.
但是某些时候使用goto也确实十分合适,如跳出多重循环时。不过一般用goto实现的功能,用其他方式也能实现,此时可根据实际情况权衡利弊再做取舍。
【拓展】
1.如何手动快速计算简单循环的循环次数?
举个简单的实例如下:
int i = 0;
while(i < 10)
{
statement
i++;
}
解题思路:
设定循环次数为Y,根据 循环初始值 加 循环次数Y与调整数值的乘积 大于或等于10列出不等式如下:
0(循环初始值)+ Y*1(i++表示调整数值为1)>= 10;
2.while中跳出本次循环继续其他循环的一种可行办法
实例及运行结果如下: