c语言第二课:循环语句与循环分支语句

前言:


    在C语言编程中,循环语句和循环分支语句是非常重要的概念。它们为程序提供了重复执行特定代码块的能力,使得程序能够更加灵活和高效地处理各种情况。本文将详细介绍C语言中的循环语句(包括while、do-while和for循环)以及循环分支语句(包括break和continue语句),并提供示例来更好地理解这些概念

循环语句

1.【while循环】

        循环条件是一个布尔表达式。只要循环条件为真,循环体就会一直执行。当循环条件为假时,循环终止,程序将继续执行循环之后的代码。

<while循环语法>

while (循环条件) {
    // 循环体
}

<while循环的执行流程> 

  1. 首先,将循环变量初始化
  2. 在对循环条件进行判断
  3. 如果循环条件为真,则执行循环体内的代码块,然后再次判断循环条件的真假
  4. 如果循环条件为假,则跳出循环,继续执行循环之后的代码

<while循环的示例>

下面是一个利用while循环打印1到10的和的示例:

#include <stdio.h>
 int main() 
{
    int i = 1;  // 初始化计数器变量

    while (i <= 10) // 循环条件:i小于等于10
    {  
        printf("%d\n", i);  // 打印当前计数器变量的值
        i++;               // 更新计数器变量,以便最终满足循环条件
    }
    return 0;
}

在这个示例中,初始化了一个计数器变量i,并使用while循环来打印1到10的数字。循环条件是i小于等于10,只要这个条件为真,循环体就会一直执行。在循环体内部,我们首先打印当前的计数器变量i的值,然后递增i的值。当i的值递增到11时,循环条件不再满足,循环终止。最终,我们将会得到输出结果为1到10的数字序列

2.do-while循环

<do-while循环语法>

do {
    // 循环体
} while (循环条件);

与while循环不同的是,do-while循环会先执行一次循环体,然后再检查循环条件。这确保循环体至少会被执行一次。

<do-while循环的执行流程>  

  1. 首先执行循环体中的操作
  2. 检查条件。如果条件为真,继续执行循环体中的操作,直到条件变为假为止。
  3. 当循环条件为假,则跳出循环,继续执行循环之后的代码

<do-while循环的示例>

以下是一个使用do-while循环的简单示例,该示例将打印1到10的数字:

#include <stdio.h>
 int main() 
{
    int i = 1;  // 初始化计数器变量

    do 
   {
        printf("%d\n", i);  // 打印当前计数器变量的值
        i++;  // 更新计数器变量
    } while (i <= 10);  // 循环条件:i小于等于10

    return 0;
}

在这个示例中,使用do-while循环来打印1到10的数字。首先,我们初始化了一个计数器变量i。然后,do-while循环首先执行循环体内的操作(打印当前的计数器变量i的值),然后检查循环条件(i小于等于10)。只要这个条件为真,循环就会继续执行。当i的值递增到11时,循环条件不再满足,循环终止。因此,即使条件一开始就为假,do-while循环也会至少执行一次循环体中的操作,输出结果为1到10的数字序列。

3. for循环

<for循环语法>

for (初始化表达式; 循环条件; 更新表达式) {
    // 循环体
}

在这个语法中,初始化表达式用于初始化循环变量,循环条件是一个布尔表达式,更新表达式用于更新循环变量。

<for循环的执行流程> 

  1. 执行初始化表达式
  2. 检查循环条件,如果为真,则执行循环体,然后执行更新表达式,再次检查循环条件
  3. 如果循环条件为假,则退出循环

<for循环的示例>

以下是一个使用for循环的简单示例,该示例将打印1到10的数字:

#include <stdio.h>
 int main() 
{
    for (int i = 1; i <= 10; i++) 
    {
        printf("%d\n", i);  // 打印当前计数器变量的值
    }

    return 0;
}

在这个示例中,使用for循环来打印1到10的数字。for循环的结构包括三个部分:初始化表达式(int i = 1),循环条件(i <= 10),以及更新表达式(i++)。循环首先执行初始化表达式,然后检查循环条件。只要循环条件为真,就执行循环体内的操作(打印当前的计数器变量i的值),然后执行更新表达式。当循环条件不再满足时,循环终止。因此,for循环也能够打印出1到10的数字序列

循环分支语句

1. break语句

break语句用于立即终止循环,并跳出循环体。它通常用于在满足某个条件时提前结束循环。

当在不同类型的循环中使用break语句时,其作用略有不同。下面是在不同类型的循环中使用break语句的示例:

在for循环中使用

#include <stdio.h>
 int main() 
{
    for (int i = 1; i <= 10; i++) 
   {
        if (i == 5) 
        {
            break;  // 当i等于5时跳出循环
        }
        printf("%d\n", i);
    }

    return 0;
}

在这个示例中,当i的值等于5时,break语句会导致程序跳出循环,因此只会打印出1到4的数字

在while循环中使用

#include <stdio.h>
 int main() 
{
    int i = 1;
    while (i <= 10) 
   {
        if (i == 5) 
       {
            break;  // 当i等于5时跳出循环
        }
        printf("%d\n", i);
        i++;
    }

    return 0;
}

在这个示例中,当i的值等于5时,break语句会导致程序跳出循环,因此只会打印出1到4的数字

在do-while循环中使用

#include <stdio.h>
 int main() 
{
    int i = 1;
    do {
        if (i == 5) 
        {
            break;  // 当i等于5时跳出循环
        }
        printf("%d\n", i);
        i++;
    } while (i <= 10);

    return 0;
}

在这个示例中,当i的值等于5时,break语句会导致程序跳出循环,因此只会打印出1到4的数字

 

2. continue语句

continue语句用于立即跳过当前循环中剩余的代码,直接进入下一次循环。它通常用于在某些条件下跳过部分循环代码的执行。

当在不同类型的循环中使用continue语句时,其作用略有不同。下面是在不同类型的循环中使用continue语句的示例,并对它们进行说明:

在for循环中使用

#include <stdio.h>
 int main() 
{
    for (int i = 1; i <= 5; i++) 
   {
        if (i == 3) 
        {
            continue;  // 当i等于3时跳过本次循环
        }
        printf("%d\n", i);
    }

    return 0;
}

在这个示例中,当i的值等于3时,continue语句会导致程序跳过本次循环的剩余部分,因此不会打印出3,而是打印出1、2、4和5

在while循环中使用

#include <stdio.h>
 int main() 
{
    int i = 1;
    while (i <= 5) 
   {
        if (i == 3) 
       {
            i++;  // 需要在continue语句之前增加i的值,以避免无限循环
            continue;  // 当i等于3时跳过本次循环
        }
        printf("%d\n", i);
        i++;
    }

    return 0;
}

在这个示例中,当i的值等于3时,continue语句会导致程序跳过本次循环的剩余部分,因此不会打印出3,而是打印出1、2、4和5

在do-while循环中使用

#include <stdio.h>
 int main() 
{
    int i = 1;
    do {
        if (i == 3) 
       {
            i++;  // 需要在continue语句之前增加i的值,以避免无限循环
            continue;  // 当i等于3时跳过本次循环
        }
        printf("%d\n", i);
        i++;
    } while (i <= 5);

    return 0;
}

在这个示例中,当i的值等于3时,continue语句会导致程序跳过本次循环的剩余部分,因此不会打印出3,而是打印出1、2、4和5

总结:猜数字游戏

利用循环写一个简单的猜数字小游戏:

第一种方法:

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

// 定义猜数字游戏的函数
void youxi()
{
    // 生成1到100之间的随机数作为要猜的数字
    int r = rand() % 100 + 1;
    printf("请输入你所猜测的数字->");

    // 循环,让玩家猜数字,直到猜中为止
    while (1)
    {
        int b;
        scanf("%d", &b);
        if (r > b)
        {
            printf("牢底,太小气\n"); // 提示玩家猜的数字太小
        }
        else if (r < b)
        {
            printf("牢底,太豪了\n"); // 提示玩家猜的数字太大
        }
        else
        {
            printf("牢底,有实力的\n"); // 猜中数字,游戏结束
            break;
        }
    }
}

// 显示游戏主菜单的函数
void mianban()
{
    printf("********************\n");
    printf("******1.开始按1*****\n");
    printf("******2.结束按0*****\n");
    printf("********************\n");
}

// 主函数
int main()
{
    int a = 0;
    srand((unsigned int)time(NULL)); // 用当前时间初始化随机数种子

    do
    {
    next: // 设置标签,用于goto语句
    nexy: // 设置标签,用于goto语句
        mianban(); // 显示游戏菜单
        scanf("%d", &a); // 接收用户输入的选择
        switch (a)
        {
        case 1:
            printf("猜数字游戏开始->\n");
            youxi(); // 调用猜数字游戏函数
            goto nexy; // 返回菜单
            break;
        case 0:
            printf("退出游戏\n"); // 提示退出游戏
            break;
        default:
            printf("输入错误,请重新输入\n"); // 提示输入错误
            goto next; // 返回菜单
        }
        break;
    } while (a != 0); // 当用户选择0时退出游戏

    return 0;
}

第二种:

#include <time.h>
#include <stdlib.h>
#include <stdio.h>

// 定义猜数字游戏的函数
void youxi()
{
    // 生成1到100之间的随机数作为要猜的数字
    int r = rand() % 100 + 1;
    printf("请输入你所猜测的数字->");

    // 循环,让玩家猜数字,直到猜中为止
    while (1)
    {
        int b;
        scanf("%d", &b);
        if (r > b)
        {
            printf("牢底,太小气\n"); // 提示玩家猜的数字太小
        }
        else if (r < b)
        {
            printf("牢底,太豪了\n"); // 提示玩家猜的数字太大
        }
        else
        {
            printf("牢底,有实力的\n"); // 猜中数字,游戏结束
            break;
        }
    }
}

// 主函数
int main()
{
    int a = 0;
    srand((unsigned int)time(NULL)); // 用当前时间初始化随机数种子

    for (;;)
    {
        printf("********************\n");
        printf("******1.开始按1*****\n");
        printf("******2.结束按0*****\n");
        printf("********************\n");

        scanf("%d", &a); // 接收用户输入的选择

        if (a == 1)
        {
            printf("猜数字游戏开始->\n");
            youxi(); // 调用猜数字游戏函数
        }
        else if (a == 0)
        {
            printf("退出游戏\n"); // 提示退出游戏
            break;
        }
        else
        {
            printf("输入错误,请重新输入\n"); // 提示输入错误
        }
    }

    return 0;
}
  1. #include<time.h> 和 #include<stdlib.h>:这两行是包含标准C库中的头文件,分别用于时间函数和随机数函数。

  2. void youxi() 函数:这是定义的一个函数,用于实现猜数字的游戏逻辑。在函数内部,使用 rand() 函数生成一个1到100之间的随机数作为要猜的数字。然后使用 while 循环来让玩家猜数字,根据玩家猜的数字和随机数的大小关系,输出不同的提示信息,直到猜中为止。

  3. void mianban() 函数:这是定义的另一个函数,用于显示游戏的主菜单。在函数内部,打印出游戏菜单的选项。

  4. int main() 函数:这是程序的入口函数。在这个函数中,首先通过 srand((unsigned int)time(NULL)); 来初始化随机数种子,以确保每次运行程序时生成的随机数不同。

  5. 使用 do-while 循环,不断显示游戏菜单并根据用户的选择来执行相应的操作。当用户选择1时,调用 youxi() 函数开始猜数字游戏;当用户选择0时,退出游戏;如果用户输入其他数字,则提示输入错误,并重新显示菜单。

  6. goto 语句:在代码中使用了 goto 语句来实现用户输入错误时的重新输入,这种用法在实际的程序开发中并不常见,一般建议使用循环结构来代替 goto 语句。

 

  • 40
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值