【C语言基础系列】C语言循环结构

写在前面:学习的第一门语言是Java,之前对C也了解一点,也只是了解一点,在加上长时间没有接触了,基本就只会一个Hello World了。现在由于准备升本考试,不得不从头开始学C。这里从零开始,记录C语言学习点滴。欢迎正在学习C语言的小伙伴一起学习,未来可期,一起加油!


for语句

for语句为一个循环语句,可以实现重复执行操作。
for语句的一般形式为:
for(表达式1;表达式2;表达式3){
    循环体语句
}
for语句中,用两个分号分离三个表达式,但for的后面没有分号,因为for与其后的循环体语句合起来作为一条完整的语句。执行的流程如下:
在这里插入图片描述
先回计算表达式1;再判断表达式2,若值为“真”,则执行循环体语句,并接着计算表达式3,然后继续循环;若值为“假”,则结束循环,继续执行for的下一条语句。

【注】for语句中的三个表达式以及循环体语句的执行顺序和书写顺序有所不同,计算表达式3在执行循环体语句之后。由上图可以看出表达式1值在进入循环前执行一次。

在for语句中,常常通过改变和判断某个变量的值来控制循环体的执行。下面来通过一个小案例了解一下for循环。
利用for循环计算1 ~ 100中奇数的和,代码如下:

#include<stdio.h>

int main(){
    int i, sum = 0;
    /* 循环1~100 */
    for(i = 1; i <= 100; i++){
        /* 判断是否为奇数 */
        if(i % 2 != 0){
            sum += i;
        }
    }
    printf("1~100中奇数的和为:%d\n", sum);

    return 0;
}
  1. 表达式1:初值表达式,对循环变量赋初值,从而指定循环的起点。如i = 1,设置i的初值为1,即循环从1开始。
  2. 表达式2:条件表达式,给出循环的条件,通常判断循环变量是否超过循环的终点。若该表达式的值为“真”,则继续循环;为“假”,则结束循环。
  3. 表达式3:步长表达式,设置循环的步长,改变循环变量的值,从而可改变表达式2的结果。
  4. 循环体语句:被反复执行的语句。循环体语句如果为复合语句(多条语句),必须用大括号括起来。
  5. 循环体语句中sum += i; 等价于sum = sum+i;

上述代码运行结果如下:
在这里插入图片描述

while语句

除了上述的for语句以外,while语句也用于实现循环。一般形式为:
while(表达式){
    循环体语句;
}
while语句的执行流程如下:
在这里插入图片描述
当表达式的值为“真”时,循环执行,直到表达式的值为“假”,循环终止并继续执行while的下一条语句。
while语句和for语句差不多,都可以实现循环。一般情况下,如果题目中指定了循环次数,使用for语句更清晰;其他情况下多使用while语句。

下面来看一个小例子,用while循环实现。
输入几个数据,计算其平均值(输入负数结束输入)。实现代码如下:

#include<stdio.h>

int main(){
    int i = 0;
    double sum = 0, grade;
    printf("请输入一组数字(输入负数结束输入):");
    /*第一次输入*/
    scanf("%lf", &grade);
    while(grade >= 0){
        sum += grade;
        i++;
        scanf("%lf", &grade);
    }
    printf("一共输入了%d个数字,其平均值为:%.2f", i, sum/i);
    return 0;
}

程序中用负数作为输入结束标志,运行时,连续输入数字并累加,直到输入负数为止。
while语句先判断是否满足循环条件,只有当grade >= 0 时才执行循环,所以在进入循环之前,先输入了第一个数据,如果该数据不是负数,就进入循环并累加成绩,然后再输入新的数据,继续循环。测试效果如下:
在这里插入图片描述

do-while语句

for语句和while语句都是在循环前先判断条件,只有满足条件才会进入循环,如果一开始不满足条件,则循环一次都不执行。
do-while语句与上述两种循环语句略有不同,它先执行循环体,后判断循环条件。所以无论循环条件的值如何,至少会执行一次循环体。一般形式为:
do{
    循环体语句
}while(表达式)

执行的流程图如下:
在这里插入图片描述
第一次进入循环时,首先执行循环体语句,然后在检查循环控制条件,即计算表达式,若值为“真”,继续循环,直到表达式的值为“假”,循环结束,执行do-while的下一条语句。

do-while语句的使用方法和while语句类似,语句中的表达式可以是任意合法的表达式,循环体语句只能是一条语句;使用时要另加初始化部分,循环体语句必须包含能最终改变条件真假性的操作。

do-while语句适合于先循环、后判断循环条件的情况,一般在循环体的执行过程中明确循环控制条件。它每执行一次循环体后,再判断条件,以决定是否进行下一次循环。

具体使用如下(从键盘输入一个整数,统计该数的位数。):

#include<stdio.h>

int main(){
    int count, number;  /* count记录整数number的位数 */

    count = 0;

    printf("请输入一个整数:");
    scanf("%d", &number);
    if(number < 0) number = -number;    /* 将输入的负数转换为整数 */
    do{
        /* 整除后减少一位个位数,组成一个新数 */
        number = number/10;
        count++;
    }while(number != 0);

    printf("输入的数字位数为:%d", count);
    return 0;
}

运行效果如下:
在这里插入图片描述

break语句和continue语句

break语句强制结束循环,一旦执行了break语句,循环提前结束,不在执行循环体中位于其后的其他语句。break语句一般和if语句配合使用,即条件满足时,才执行break跳出循环;否则,若break无条件执行,意味着永远不会执行循环体中break后面的其他语句。

continue语句的作用是跳出循环体中continue后面的语句,继续下一次循环,continue语句一般也需要和if语句配合使用。

continue语句和break语句的区别在与,break结束循环,continue只是跳过后面语句继续循环。break除了可以终止循环外,还用与switch语句,而continue只能用于循环。


由于初学C语言,上述内容如有错误地方,恳请各位大佬指出!

猜你喜欢

转载自blog.csdn.net/qq_40205116/article/details/105581082