C语言分支循环语句

本文介绍了C语言中的if和switch分支语句,以及while、do...while和for循环的用法,包括随机数生成与游戏编程示例。通过实例展示了如何在猜数字游戏中运用这些控制结构。
摘要由CSDN通过智能技术生成

C语言中有分支语句分为if语句和switch语句。

if语句的例子:

#include <stdio.h>

// 将三个整数从大到小输出

int main()
{
    int a = 0;
    int b = 0;
    int c = 0;
    scanf("%d %d %d", &a, &b, &c);
    if (a > b)
    {
        if (a > c)
        {
            if (b > c)
            {
                printf("%d %d %d\n", a, b, c);
            }
            else
            {
                printf("%d %d %d\n", a, c, b);
            }
        }
        else
        {
            printf("%d %d %d\n", c, a, b);
        }
    }
    else
    {
        if (b > c)
        {
            if (a > c)
            {
                printf("%d %d %d\n", b, a, c);
            }
            else
            {
                printf("%d %d %d\n", b, c, a);
            }
        }
        else
        {
            printf("%d %d %d\n", c, b, a);
        }
    }


    
    
    return 0;
}

switch语句的例子:

#include <stdio.h>

int main() {
    int day;

    // 提示用户输入一个数字
    printf("请输入一个1到5之间的数字:");
    scanf("%d", &day);

    // 使用switch语句根据输入的数字显示星期几
    switch (day) {
        case 1:
            printf("星期一\n");
            break;
        case 2:
            printf("星期二\n");
            break;
        case 3:
            printf("星期三\n");
            break;
        case 4:
            printf("星期四\n");
            break;
        case 5:
            printf("星期五\n");
            break;
        default:
            printf("输入无效,请输入1到5之间的数字。\n");
            break;
    }

    return 0;
}

在switch语句中每个case里都需要加break跳出switch语句否则将会执行该case之后的下一个case直到遇到break然后跳出switch语句。

在C语言中还有循环语句,while循环、do...while循环、for循环三个循环语句

while循环和do...while循环的区别是do...while循环循环体执行的次数一般情况下一定会比逻辑判断多一次。

while循环使用的过程中如果不将判断所用的变量迭代将会进行无限循环例如:

int main()
{
    int a = 0;
    while (a)
    {
        printf("hehe\n");
    }
    return 0;
}

 所以在使用while循环的过程中要格外注意逻辑判断变量的迭代。

而for循环则将变量的定义初始化,变量的逻辑判断,变量的迭代放到一次让人更容易看清。

这是一个利用for循环打印100~200之间的素数的程序。

#include <stdio.h>
// 写一个代码:打印100~200之间的素数
#include <math.h>
int main()
{
    for (int i = 101; i < 200; i+=2)
    {
        int flag = 1;
        for (int j = 2; j <= sqrt(i); j++)
        {
            if (i % j == 0)
            {
                flag = 0;
                break;
            }
        }
        if (flag == 1)
        {
            printf("%d ", i);
        }
    }
    return 0;
}

在了解玩这些循环之后我们可以试着自己写一个猜数字的游戏。游戏规则如下:

随机生成一个1~100之间的数字,在玩家猜大的情况下告诉玩家猜大了,猜小了同理。

这里先来说如何生成随机数:(头文件是stdlib.h)

在C语言中提供了rand()函数,它可以生成一个伪随机数。至于为什么是伪随机数是因为它在使用的过程中在一断代码中多次使用时数字确实时随机的,但是当代码运行第二次时rand()函数生成的数字于上次一样,具体大家可以自己去试一下这里不再过多讲述。

那么为了解决这个问题在C语言中还存在srand()函数。它可以设置随机数的种子,而rand()函数是通过随机数的种子进行随机的比如rand(1)与rand(2)生成的随机数就是不一样的。而srand()函数就可以设置rand()函数的随机数种子。那么我们需要一个一直在变化的数字提供给srand()函数。

众所周知时间是一直在变化的,所以我们可以将时间提供给srand()函数。在C语言中,有time()函数它的返回值是一个时间戳(这里不进行解释说明只需要会用且知道一点即可),其中的参数填写NULL即可,所以我们可以使用srand((unsigned int)time(NULL))设置rand()函数的随机数种子。

接下来是对于代码构思的简单提示:

首先游戏需要一个菜单,有了菜单之后我们需要输入数字来判断玩家是否想要玩游戏或者退出,这里可以使用if语句或者switch语句。并且在一局游戏结束后还需要判断玩家是否想继续玩下一局或者退出。这里可以使用循环来实现。下面附上代码(看代码前请先自己思考一下)

#include <stdio.h>
#include <stdlib.h>
void Menu()//打印菜单
{
    printf("******************\n");
    printf("******1.play******\n");
    printf("******0.exit******\n");
    printf("******************\n");
}
void game()//游戏
{
    int ret = 0;
    int guess = 0;
    ret = rand() % 100 + 1;
    while(1)
    {
        printf("请猜数字:");
        scanf("%d",&guess);
        if(guess > ret)
        {
            printf("猜大了\n");
        }
        else if(guess < ret)
        {
            printf("猜小了\n");
        }
        else
        {
            printf("恭喜你猜对了\n");
            break;
        }
    }
}
int main()
{
    //打印菜单
    Menu();
    srand((unsigned int)time(NULL));
    int input = 1;
    while (input)
    {
        scanf("%d", &input);
        switch (input)
        {
            case 1:
            {
                printf("游戏开始\n");
                game();
                break;
            }
            case 0:
            {
                printf("游戏结束\n");
                break;
            }
            default:
            {
                printf("输入错误\n");
                break;
            }
        }
    }
    return 0;
}

springboot100基于Springboot+Vue精准扶贫管理系统-毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值