猜数字小游戏

简介:

@[TOC]

前言:

1.博主实力有限,有什么错误的地方,请指出,非常感谢!
2.猜数字游戏最麻烦的地方在于:制造那个要猜的数字即随机数。详见我的另外一篇博客:随机数的生成

思路:

void menu()
{
    printf("**************************\n");
    printf("*****1.Play***************\n");
    printf("*****0.Exit***************\n");

}

int main ()
{
    
    srand((size_t)time(NULL));//设置随机数种子
    int choice = 0;//注意别把choice放到do语句里面,
                   //因为当while判断循环条件choice时,choice的生命周期已经结束。
    
    do
    {
        menu();
        scanf("%d", &choice);
        switch (choice)//注意break的使用。
        {
        case 1:game();
            break;
        case 0:printf("退出\n");
            break;
        default:printf("选择错误\n");
            break;
        }
    } while (choice);
    
    return 0;
}
void game()
{

    int a = rand()%100;//通过%运算符生成100以内的随机数。
    int x = 0;
    while (1)
    {
        printf("请输入你所猜的数:");
            scanf("%d", &x);
        if (x == a)
        {
            printf("恭喜你猜对了,该数字是%d\n", a);
            break;
        }
        else if(x>a)
         {
            printf("猜大了\n");
        }
        else
        {
            printf("猜小了\n");
        }
    }
}

全部代码:

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>
#include <stdlib.h> 
#include <time.h>
void menu()
{
    printf("**************************\n");
    printf("*****1.Play***************\n");
    printf("*****0.Exit***************\n");

}

void game()
{

    int a = rand()%100;//通过%运算符生成100以内的随机数。
    int x = 0;
    while (1)
    {
        printf("请输入你所猜的数:");
            scanf("%d", &x);
        if (x == a)
        {
            printf("恭喜你猜对了,该数字是%d\n", a);
            break;
        }
        else if(x>a)
         {
            printf("猜大了\n");
        }
        else
        {
            printf("猜小了\n");
        }
    }
}

int main ()
{
    
    srand((size_t)time(NULL));//设置随机数种子
    int choice = 0;//注意别把choice放到do语句里面,
                   //因为当while判断循环条件choice时,choice的生命周期已经结束。
    
    do
    {
        menu();
        scanf("%d", &choice);
        switch (choice)//注意break的使用。
        {
        case 1:game();
            break;
        case 0:printf("退出\n");
            break;
        default:printf("选择错误\n");
            break;
        }
    } while (choice);
    
    return 0;
}

总结:

1.程序需要的函数较少,代码较短,因此可以不需要自定义函数库。
2.随机数的生成需要格外注意。最好别把srand()放到循环中
相关文章
|
并行计算 Ubuntu Docker
apollo快速入门之安装指南
apollo快速入门之安装指南
386 3
|
并行计算 Go 调度
Goroutine调度机制深度探究
【2月更文挑战第17天】Goroutine作为Go语言轻量级的并发执行体,其高效的调度机制是Go语言并发性能卓越的关键。本文将深入探究Goroutine的调度原理、调度器的实现以及调度过程中的优化策略,帮助读者全面了解Goroutine调度机制的内部工作机理,从而更好地利用Go语言的并发特性。
|
9月前
|
监控 安全 API
如何设计、维护和推广 API:专业人士的实用指南
API 在数字化环境中扮演着连接系统与应用的关键角色。设计卓越的 API 需明确目标、遵循 RESTful 原则、保持一致性和标准化。有效维护包括版本控制、性能监控、详细文档和负载优化。推广 API 通过内部培训、吸引开发者社区及展示成功案例。Apipost 提供全面工具集、无缝集成、离线支持和高安全性,助力打造可靠的 API,推动业务增长。
|
机器学习/深度学习 人工智能 安全
【AI系统】AI系统的设计目标与挑战
本文探讨了AI系统设计的核心目标及其面临的挑战。AI系统作为硬件与应用间的桥梁,需提升开发效率、优化用户体验,并支持数据处理、模型训练等全生命周期环节。此外,还需在系统级上灵活支持多样化AI任务,应对新技术带来的挑战,如动态图支持、大规模部署及安全需求。未来,AI系统设计将更注重高效、灵活与安全。
430 0
|
人工智能 Java Spring
Spring框架下,如何让你的日志管理像‘AI’一样智能,提升开发效率的秘密武器!
【8月更文挑战第31天】日志管理在软件开发中至关重要,不仅能帮助开发者追踪问题和调试程序,还是系统监控和运维的重要工具。在Spring框架下,通过合理配置Logback等日志框架,可大幅提升日志管理效率。本文将介绍如何引入日志框架、配置日志级别、在代码中使用Logger,以及利用ELK等工具进行日志聚合和分析,帮助你构建高效、可靠的日志管理系统,为开发和运维提供支持。
352 0
|
缓存 网络协议 网络性能优化
运输层---UDP协议
运输层---UDP协议
272 3
|
Linux 调度 数据库
Django使用django-apscheduler实现定时任务
【7月更文挑战第8天】定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程
1175 1
|
开发工具 git
码云 -- 本地代码上传到码云
码云 -- 本地代码上传到码云
734 1
|
SQL 关系型数据库 数据库连接
drds配置逻辑库和物理表
【8月更文挑战第6天】
498 0
|
存储 大数据 云计算
云计算:技术与应用的融合之美
云计算:技术与应用的融合之美
677 0