三大结构中的循环,简单来说就是不断重复做一件事,在C语言中给我们提供了三种语句来可以让我们来使用循环,他们分别是:
- while
- do-while
- for
while循环
在C语言中,while循环语句是一种十分常用的循环语句,它的形式和if语句相似。while语句理比较容易理解,可读性也比较强,因此应用广泛。
while语句的一般形式:
while(表达式) //while循环头
{
语句 //while循环体
}
执行过程:1.判断表达式的真假,求出表达式的值。
2.如果表达式的值不为0(为真),则执行语句,然后程序去执行步骤1,再次求出表达式的真假,如果表达式的值为0(为假),while循环结束。
示例:
求出0~100以内的数
思路:
1.定义变量表示循环次数
2.while循环的判断条件是否成立
#include <stdio.h>
int main()
{
int counter = 0; //定义变量,相当于计数
while (counter < = 100) //判断条件
{
printf("counter = %d\n", counter);
counter++; //每执行一次循环体自加一次
}
return 0;
}
do-while循环
do-while循环语句是while循环语句的一个变体,虽然do-while语句于while语句类似,但两者执行循环体语句的顺序不同。while语句是对进入循环前进行判断,在执行循环体,而do-while语句是先去执行一次循环,在判断条件是否成立。
一般形式为:
do
{
//循环体语句
}while(表达式);
注:在使用do-while语句时,条件要放在while关键字后面的括号内,而且在最后必须加分号。
输出0~100内的数:
int main()
{
int counter = 0; //定义变量,相当于计数
do
{
printf("counter = %d\n", counter);
counter++; //每执行一次循环体自加一次
} while (counter <= 100); //判断条件
return 0;
}
for循环
一般形式
for循环是C语句中最为常见的一种循环语句,不仅功能强大,而且用法灵活,实现的循环结构逻辑清晰。
for循环可以分为两个部分,即for循环头和for循环体:
- for循环头由关键字for和包含在一个括号内由分号隔开的3个表达式组成
- 循环体可以是一条语句,也可以是包含在大括号在内的符合语句。
for语句的一般形式:
for(语句1;语句2;语句3)
{
循环体语句
}
输出0~100内的数:
for (int counter = 0; counter <= 100; counter++)
{
printf ("counter = %d\n", counter);
}
关于for的三个表达式
//for循环的三个语句执行顺序
for(printf("我是语句1");printf("我是语句2");printf("我是语句3"))
{
printf("我是循环体");
}
我们看到输出结果如下:
其中语句1执行了1次,其他语句循环执行,顺序为语句2,循环体,语句3。
说明
表达式省略的问题
- for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋值
- 如果表达式2省略,即不判断循环条件,循环无终止的进行下去。
- 表达式3可以省略,但此时程序设计者应使用别的方法保证循环正常结束。
- 可以省略表达式1,表达式3,只有表达式2,即只有循环中的判断条件。
表达式的填写问题
- 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式
- 表达式2一般是关系表达式或者逻辑表达式,但也可以是任意表达式,只要其为非零,就执行循环体。
- 表达式3一般是修改循环变量的语句,但也可以是任意表达式
break与continue
break:
break语句再switch-case语句中是跳出。break语句在循环体中是跳出循环。
continue:
对于continue来说,作用是跳过本次循环。
continue与break多与if连用。
关于三个循环结构的选择
三种循环结构一般情况可以相互替代,一把在知道循环次数的时候我们选择使用for循环,不知道循环次数的时候使用while循环,看下面的情况:
int counter = 0;
for(;counter<=100;)
{
printf("你好\n");
counter++;
}
int nNum = 0;
while (nNum <= 100)
{
printf("%d", nNum);
nNum++;
}
return 0;
do-while语句先执行循环体,在判断循环控制条件,循环体至少要被执行一次。
while和for语句先判断循环控制条件,再执行循环体,所以循环体可能一次也不被执行。