循环结构是程序中一种非常重要的控制结构。其特点是:在给定的条件成立时,反复执行某程序段,直到条件不成立为止。接下来我来一一介绍C语言中常见的循环结构。
1、分支语句
1.1 if语句
在if语句中,if语句可分为三种形式:if、if-else、if-else-if。
其基本格式为:
if(表达式)
语句1;//if语句
if(表达式)
语句1;
else
语句2;//if-else语句
if(表达式1) 语句1;
else if(表达式2) 语句2;
else if(表达式3) 语句3;
.
.
.
else 语句n;//if-else-if语句
注意:if关键字后均为表达式,该表达式通常是逻辑表达式或关系表达式,也可以是其他任何表达式,或者是一个变量。只要表达式非零时,表达式的值就为真,否则为假。
另外,if与else下的语句中,如果有大于等于2条语句时,需要用{}包围起来,组成一个复合语句。
并且,在C语言中,else总和它上面离他最近的if配对。if语句允许嵌套使用,如:
if(表达式1)
if 语句;
if(表达式1)
if 语句;
else
if语句;
1.2 switch语句
在C语言中,除if用于分支结构,switch语句也可以使用,并且在某些情况下,switch语言更为简洁、易读。
switch语句的格式为:
switch(表达式)
{
case 常量表达式1:语句1;
break;
case 常量表达式2:语句2;
break;
case 常量表达式n:语句n;
break;
[default: 语句;
break;]
}
* 当switch语句后的表达式的值与某个case后的表达式的值相同时,就执行case后面的语句;当执行到了break后,跳出switch语句,执行switch语句的下一条语句。
* 如果没有任何一个case匹配,则执行default后面的语句。
注意:
(1)switch语句后面的表达式必须是一个整型表达式,而且case后面的表达式类型应该与switch后面的表达式类型一致。
(2)每个case后面必须是常量表达式,不能包含变量。
(3)switch语句可以嵌套使用。
2、循环语句
2.1 while语句
2.1.1 while
我们以求1~100的和为例,使用while求和,程序如下:
#include<stdio.h>
int main()
{
int i=1,sum=0;
while(i<=100)
{
sum+=i;
i++;
}
printf("sum=%d\n",sum);
return 0;
}
sum=5050
2.1.2 do-while
#include<stdio.h>
int main()
{
int i,sum=0;
do
{
sum+=i;
i++;
}
while(i<=100);
printf("sum=%d\n",sum);
return 0;
}
do-while与while的区别是前者是先执行后判断,后者是先判断后执行,若do-while语句后面的表达式值一开始为假,循环体还是要先执行一次。
2.2 for语句
#include<stdio.h>
int main()
{
int i,sum=0;
for(i=1;i<=100;i++)
sum+=i;
printf("sum=%d\n",sum);
return 0;
}
for语句格式为:
for(表达式1;表达式2;表达式3)
语句;
注意:
(1)for语句后面的表达式1一般为赋值表达式;表达式2一般为关系表达式或逻辑表达式,作为循环控制条件;表达式3一般为赋值表达式,给循环控制变量增量或者减量。
(2)表达式之间用“;”隔开。
(3)for语句也可以组成多重循环,而且也可以和while语句或do-while语句嵌套。
(4)循环体可以是空语句,例如计算用户输入的字符数:
#include<stdio.h>
int main()
{
int n=0;
printf("input a string:\n");
for(;getchar()!='\n';n++)
printf("%d",n);
return 0;
}
2.3 break与continue语句
2.3.1 break语句
break语句的作用是再循环体中测试应立即结束循环时,使控制立即跳出循环结构,转而执行循环语句后面的第一条语句。
注意:
(1)break语句只可以用于while语句、d-while语句或for语句构成的循环结构中和Switch选择结构中。
(2)在嵌套循环下,break语句只可以终止并跳出它最近的一个循环体。
(3)如果想让break跳出最外层的循环体,可以设置一个标志变量tag,然后在每层循环后面加上一条语句:if(tag) break;
2.3.2 continue语句
continue语句的作用是跳过continue语句后面尚未执行的语句,开始下一次循环,即只结束本次循环的执行,并不终止整个循环的执行。
本文结束,若有不完整或错误之处,欢迎大家补充,本人可以及时纠错更新。