c语言猜数字游戏

一、题目描述

给你生成一个1~100的数,你需要不断输入另一个数字来判断生成的数字是多少,输入的数大于生成的数,提示猜大了,小于,提示猜小了,输入正确,提示猜对了,并退出循环

二、准备工作,引入生成随机数的头文件
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
三、内容组成
(1)生成随机数

c语言提供了rand函数生成随机数,随机数范围在0~RAND_MAX之间,这个RAND_MAX在大部分编译器上是32767,而题目要求在1~100之间(需使用头文件stdlib.h)

//函数原型,此段代码不写入程序中,仅作介绍
int rand(void);
//可以在另外的项目中试试运行两次以下代码,会发现两次运行结果一样
#include <stdio.h>
#include <stdlib.h>
int main()
{
 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());
 printf("%d\n", rand());
 return 0;
}
//所以需要srand函数初始化rand函数

srand函数用来初始化随机数的生成器

void srand(unsigned int seed)
//通过seed参数来设置rand函数生成随机数的种子
//意思是只要参数seed是随机的,那么rand生成的数就是真正的随机的
//即生成随机数B需要另一个随机数A,(A在seed的位置上)
//那么另一个随机数又如何获取?

引入time函数,需要头文件<time.h>

程序运行的时间是时刻发生变化的,符合随机,C语言中time函数可以获得这个时间

函数原型如下

time_t time(time_t*timer);
//time_t是一种数据类型,通常是32位的整型或64位的整型类型

如果timer是非NULL指针的话,函数会将这个返回的差值放在timer指向的内存中带回去。

如果time是NULL,就只返回这个时间的差值。time返回的这个时间差也被叫做:时间戳

(2)游戏玩法部分

首先游戏开始菜单界面设计

自定义名称为menu的函数

void menu()
{
   
    printf("************************\n");
    printf("********* 1.start********\n");
    printf("**********2.exit********\n");
    printf("************************\n");
}

游戏部分

void game(){
    int ret=rand()%100+1;//接收随机数的值
    //如果是ret =rand(),则说明返回的随机数范围在0~32767之间
    //如果是ret=rand()%100,则说明返回的是0~99之间的数,因为任何数%100都只有两位数,
    //例如1563298%100==98
    //如果rand()%100+1就意味着返回数在1~100范围内
    int guess=0;//初始化,后面会重新输入值
    
    int count=5;//假设你给自己有5次机会
    while(count){
        printf("请输入你要输入的数字");
        scanf("%d",&guess);
        if(guess>ret){
                printf("猜大了");
            }
        else if(guess<ret){
                printf("猜小了");
            }
        else {
                printf("猜对了");
                break;
            }
            count--;//执行完if语句后,意味着你用了一次机会,所以count--
        }
        if(count==0){
            printf("次数用完,正确的数字为%d\n",ret);
    }
}
(3)主函数部分
int main(){
    int input=0;//初始化input
    srand((unsigned int)time(NULL));
    do{
        menu();
        printf("请选择:");
        scanf("%d",&input);
        switch(input)
            {
              case 1:
                printf("你输入%d,游戏开始",input);
                game();//进入game函数
                break;//游戏运行完,退出switch
              case 0:
                printf("你输入%d,游戏退出\n",input);
                break;
              default:
                printf("输入1或0以外的数字,选项选择错误\n");
                break;
            }
        
      }while(input);
        
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值