手写C语言之分支循环应用-编写猜数字游戏(09)(11)

简介: 手写C语言之分支循环应用-编写猜数字游戏(09)

前面文章有一个密码登陆的程序,这里需要强调一下数组是不需要取地址,因为数组本身就是以地址的形式存储的。

猜数字游戏(产生100以内的数字)

游戏可以一直玩,有功能选项!并且我们的游戏一打开就可以运行了,所以我们使用do while循环的模式。

定义功能打印函数

void menu()
{
  printf("**********************************\n");
  printf("*********** 1.play **********\n");
  printf("*********** 0.exit **********\n");
  printf("**********************************\n");
}

每次程序运行之后都需要我们进行打印信息,用于我们的用户进行玩游戏的提示,所以我们需要编写一个打印函数,该函数没有返回值,所以是void!

猜数字函数

//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
  int random_num = rand() % 100 + 1;
  int input = 0;
  while (1)
  {
    printf("请输入猜的数字>:");
    scanf("%d", &input);
    if (input > random_num)
    {
      printf("猜大了\n");
    }
    else if (input < random_num)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("恭喜你,猜对了\n");
      break;
    }
  }
}

这里我们需要产生一个随机值,这里的随机值和我们其他语言(Python)是不一样的,这里为什么要将产生的rand()%100呢?因为这里是随机数的最大值,需要控制在100以内,利用取余操作符,模100=1——99,然后加1,就是1-100的数字。

主函数

int main()
{
  int input = 0;
  srand((unsigned)time(NULL));
  do
  {
    menu();
    printf("请选择>:");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      game();
      break;
    case 0:
      break;
    default:
      printf("选择错误,请重新输入!\n");
      break;
    }
  } while (input);
  return 0;
}

这里首先需要用户输入一个值,这个值那么是0,要么是1,所以它可以作为我们循环是否执行的判断依据,利用switch进行执行。


srand((unsigned)time(NULL));


由于每次生成的随机数要满足随机,所以我们需要利用我们的初始化随机函数种子:


1、拿当前系统时间作为种子,由于时间是变化的,种子也在变化,可以产生随机数。计算机中的随机数实际上都不是真正的随机数,如果两次给的种子一样,则会生成相同的随机序列。 所以,一般都会以当前的时间作为种子来生成随机数,这样更加的随机。

2、使用时,参数可以是unsigned型的任意数据,比如srand(10);

3、如果不使用srand,用rand()产生的随机数,在多次运行,结果是一样的。


而且这个函数只需要调用一次,不然它产生的数比较的逼近,无法模拟真实的游戏场景,所以我们将其初始化随机种子放到我们的main函数。


完整代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
  printf("**********************************\n");
  printf("*********** 1.play **********\n");
  printf("*********** 0.exit **********\n");
  printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
  int random_num = rand() % 100 + 1;
  int input = 0;
  while (1)
  {
    printf("请输入猜的数字>:");
    scanf("%d", &input);
    if (input > random_num)
    {
      printf("猜大了\n");
    }
    else if (input < random_num)
    {
      printf("猜小了\n");
    }
    else
    {
      printf("恭喜你,猜对了\n");
      break;
    }
  }
}
int main()
{
  int input = 0;
  srand((unsigned)time(NULL));
  do
  {
    menu();
    printf("请选择>:");
    scanf("%d", &input);
    switch (input)
    {
    case 1:
      game();
      break;
    case 0:
      break;
    default:
      printf("选择错误,请重新输入!\n");
      break;
    }
  } while (input);
  return 0;
}

image.png

相关文章
|
22天前
|
安全 C语言
C语言循环的使用注意点
在C语言中,合理使用循环对于编写高效、安全的代码至关重要。以下是几点建议:确保循环条件正确以避免无限循环;每次迭代时正确更新循环变量;恰当使用`break`和`continue`控制执行流程;注意嵌套循环中的变量作用域;简化循环体内逻辑;根据需求选择合适的循环类型;注意数据类型以避免溢出;保持良好的缩进和注释习惯;减少重复计算以提升性能;确保循环终止条件明确。遵循这些建议,可以提高代码质量和可维护性。
186 88
|
3天前
|
Java Unix Linux
1.3 C语言的应用范围
C语言自20世纪80年代以来一直是主流编程语言,适用于小型计算机、个人电脑及大型机。因其高效紧凑且易于修改和移植,广泛用于软件开发。尽管后来C++和JAVA流行起来,但C语言仍然是软件行业核心,并在嵌入式系统、科学编程和操作系统开发如Linux中扮演重要角色。即使到现在,掌握C语言仍是一项重要技能。不是必须得是计算机专家才能使用C语言,学习C语言同时也能学到很多C++的知识。
26 8
|
23天前
|
C语言
【C语言基础考研向】08判断语句与循环语句
本文介绍了C语言中的关键编程概念:首先解析了关系表达式与逻辑表达式的优先级及计算过程;接着详细说明了`if-else`语句的使用方法及其多分支和嵌套应用;然后讲解了`while`循环与`for`循环的语法和注意事项;最后介绍了`continue`和`break`语句在控制循环中的作用和示例代码。
|
26天前
|
存储 算法 C语言
C语言手撕实战代码_循环单链表和循环双链表
本文档详细介绍了用C语言实现循环单链表和循环双链表的相关算法。包括循环单链表的建立、逆转、左移、拆分及合并等操作;以及双链表的建立、遍历、排序和循环双链表的重组。通过具体示例和代码片段,展示了每种算法的实现思路与步骤,帮助读者深入理解并掌握这些数据结构的基本操作方法。
|
26天前
|
存储 C语言
数据结构基础详解(C语言): 树与二叉树的应用_哈夫曼树与哈夫曼曼编码_并查集_二叉排序树_平衡二叉树
本文详细介绍了树与二叉树的应用,涵盖哈夫曼树与哈夫曼编码、并查集以及二叉排序树等内容。首先讲解了哈夫曼树的构造方法及其在数据压缩中的应用;接着介绍了并查集的基本概念、存储结构及优化方法;随后探讨了二叉排序树的定义、查找、插入和删除操作;最后阐述了平衡二叉树的概念及其在保证树平衡状态下的插入和删除操作。通过本文,读者可以全面了解树与二叉树在实际问题中的应用技巧和优化策略。
|
1月前
|
存储 安全 C语言
C语言 二级指针应用场景
本文介绍了二级指针在 C 语言中的应用,
|
2月前
|
C语言
【C语言篇】分支语句详解(超详细)
在 switch 语句中 case 语句和 default 语句是没有顺序要求的,只要顺序是满⾜实际需求的就可以。 不过我们通常是把 default ⼦句放在最后处理的。
|
2月前
|
机器学习/深度学习 C语言
【C语言篇】循环语句详解(超详细)
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳出循环.
|
2月前
|
算法 编译器 C语言
【C语言篇】猜数字游戏(赋源码)
rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是依赖编译器上实现的,但是⼤部分编译器上是32767。
|
2月前
|
存储 搜索推荐 C语言
C语言中的指针函数:深入探索与应用
C语言中的指针函数:深入探索与应用

相关实验场景

更多
下一篇
无影云桌面