C语言实现猜数字游戏之基础版

项目简介 

初学者 学完C语言初阶,了解各种语法后实现的第一个小游戏 比较简单易懂有利于提起兴趣 和后续项目实现

首先打印菜单让人了解

void meau()
{
	printf("##########################\n");
	printf("######1.  play     #######\n");
	printf("######2.  exit     #######\n");
	printf("##########################\n");

}

打印菜单记得换行

然后让用户选择 并且输入 此时用Switch语句根据选择不同 而产生不同结果 因为可能要进行多次就可以进行(并且至少进行一次就采用do while )循环代码如下

do {
	meau();
	
	scanf_s("%d", &input);
	switch (input)
	{
	case 1:game();
		break;
	case 0:printf("退出\n");
		break;
	default:
		printf("输入错误 重新输入\n");
		break;
	}
} while (input);

刚好就用0 和1 确定要进行哪一步操作 然后开始进入函数内部部分

首先要生成一个随机数 1到100之间 此时用rand 和srand 来生成 引用头文件《stdlib.h》

这是整个项目最有技术性的一点;

有关srand 和rand 有关介绍

srand和rand函数是C/C++语言中用于生成随机数的函数。srand函数用于给rand函数设定种子,而rand函数则用于生成随机数。下面是它们的使用方法:

  1. srand函数的使用方法: srand函数用于给rand函数设定种子,参数seed是rand函数的种子,用来初始化rand函数的起始值。一般情况下,我们可以使用时间函数time来获取当前时间作为种子,以保证每次运行程序时生成的随机数都不同。例如:

srand(time(NULL)); //使用当前时间作为种子

  1. rand函数的使用方法: rand函数用于生成随机数,它返回一个介于0和RAND_MAX(通常是32767)之间的随机整数。例如:

int num = rand(); //生成一个随机整数

如果我们想要生成一个指定范围内的随机整数,可以使用取模运算符%来实现。例如,要生成一个1到100之间的随机整数,可以使用以下代码:

int num = rand() % 100 + 1; //生成一个1到100之间的随机整数

需要注意的是,如果在调用rand函数之前没有调用过srand函数,那么每次程序运行时生成的随机数都是一样的。因此,在使用rand函数之前,一定要先调用srand函数来设定种子。

有关随机数的实现

在上文介绍中已经明确说明了 其使用方法

本题生成1到100的随机数如下代码

int input = 0;
srand((unsigned int)time(NULL));

注意要点是此部分只能放在主函数中进行一次 如果种子设定不同 那么每次rand产生的数都不同 无法实现数字的比较;

顾综合以上知识

进行如下代码

#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void meau()
{
    printf("##########################\n");
    printf("######1.  play     #######\n");
    printf("######2.  exit     #######\n");
    printf("##########################\n");

}

void game()
{
     int ret=rand()%100+1;//生成随机数 1到100;
    
     //猜数字rand 和srand使用时间戳 来随机 srand种子只执行一次
     while(1)
     {
         printf("请猜数字\n");
         int guess = 0;
         scanf_s("%d", &guess);
         if (guess > ret)
         {
             printf("猜大了 再次输入\n");
             
         }
         else if (guess < ret)
         {
             printf("猜小了 再次输入\n");
             
         }
         if (guess == ret)
         {
             printf("猜对了 恭喜你\n");
             break;
         }

     } 
     
}


int main()
{
    int input = 0;
    srand((unsigned int)time(NULL));
    do {
        meau();
        
        scanf_s("%d", &input);
        switch (input)
        {
        case 1:game();
            break;
        case 0:printf("退出\n");
            break;
        default:
            printf("输入错误 重新输入\n");
            break;
        }
    } while (input);

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值