信息发布→ 登录 注册 退出

详解C语言实现猜数字游戏

发布时间:2026-01-11

点击量:
目录
  • 一:猜数字游戏基本介绍&对程序预期
  • 二:程序设计思路
    • 1.总体思路:
    • 2.菜单部分函数:
    • 3.游戏部分函数
    • 4.主函数部分
    • 5.代码主体
  • 三:总结

    前言:本文主要讲解以c语言编写猜数字游戏,目的是介绍C语言中的循环和分支的具体用法。

    一:猜数字游戏基本介绍&对程序预期

    .猜数字游戏,顾名思义,就是系统随机给出一个数字,玩家对这个数字进行猜测,如果玩家猜测的数字大于给出的数字,则系统会提示猜大了,如果玩家猜测的数字小于给出的数字,则系统会提示猜小了,这样逐步缩小猜测范围,直到玩家猜对为止。

    2.程序预期:猜数字结束后,玩家如果猜对了的话可以继续游戏,也可以退出游戏

    二:程序设计思路

    1.总体思路:

    首先,实现游戏功能必须要有一个菜单来提示玩家如何进行操作。其次,为了代码具有可读性,可以将游戏部分函数和菜单部分函数作为两个子函数,然后在主函数调用他们。然后我们为了实现玩家可以多次游戏可以使用循环。

    综上所述,我们应该设计两个子函数:菜单函数和游戏函数。一个主函数

    2.菜单部分函数:

    菜单部分函数

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

    菜单函数设计相对简单,只是为了提示玩家如何操作

    3.游戏部分函数

    void game()
    {
    	srand((unsigned int)time(NULL));
    	int ret = rand() % 100 + 1;
    	while (1)
    	{
    		printf("猜数字\n");
    		int guess = 0;
    		scanf("%d", &guess);
    		if (guess > ret)
    		{
    			printf("猜大了\n");
    		}
    		else if (guess < ret)
    		{
    			printf("猜小了\n");
    		}
    		else
    		{
    			printf("猜对了\n");
    			break;
    		}
    		
    	}
    }

    ①在游戏函数部分,首先要生成随机数,生成随机数的方法如下:

    C语言中提供了生成随机数的函数rand函数

    rand函数会返回一个0到RAND-MAX的随机整数,使用这个函数需要包含头文件<stdlib.h>

    但是rand函数每次生成的随机数相同,所以只用rand函数不够,所以要使用srand()函数增加随机性 

    后一句中说明在使用rand函数前要定义一个srand()函数

    如画线句所示,srand函数的作用就是一个随机数的生成的种子。

    而且需要一个无符号整型,在srand函数中括号输入一个随机数字即可生成随机数,时间正是一个一直在变化的数字。

    在这里提出一个时间戳的概念:时间戳是指格林威治时间1970年01月01日00时00分00秒 (北京时间1970年01月01日08时00分00秒)起至现在的总秒数。

    因为srand需要的参数是无符号类型,所以对time进行强制类型转换。time后不需要参数,所以给他一个空指针。

    使用srand((unsigned int)time(NULL))

    输入time返回一个时间戳

    需要一个头文件<time.h>

    因为给出的随机数范围太大,所以需要限定随机数范围

    如下:int ret = rand()%100+1,将随机数限定在0-100区间,便于猜测

    ②:猜数字环节

    利用while循环来逐步缩小猜测范围,当猜测的数字等于随机数时提示”猜对了“。

    4.主函数部分

    int main()
    {
    	int input = 0;
    	do
    	{
    		menu();
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:
    			game();
    			break;
    		case 0:
    			break;
    		default:
    			printf("输入错误,请重新输入");
    		}
    	} while (input);
    	return 0;
    }

    主函数中使用了switch语句,和do-while语句

    主要目的是为了玩家选择是否进入游戏

    5.代码主体

    #define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<time.h>void menu(){printf("***********************************************\n");printf("*************************1play*****************\n");printf("*************************0exit*****************\n");printf("***********************************************\n");}void game(){srand((unsigned int)time(NULL));int ret = rand() % 100 + 1;while (1){printf("猜数字\n");int guess = 0;scanf("%d", &guess);if (guess > ret){printf("猜大了\n");}else if (guess < ret){printf("猜小了\n");}else{printf("猜对了\n");break;}}}int main(){int input = 0;do{menu();scanf("%d", &input);switch (input){case 1:game();break;case 0:break;default:printf("输入错误,请重新输入");}} while (input);return 0;}#define _CRT_SECURE_NO_WARNINGS
    #include<stdio.h>
    #include<time.h>
    void menu()
    {
    	printf("***********************************************\n");
    	printf("*************************1play*****************\n");
    	printf("*************************0exit*****************\n");
    	printf("***********************************************\n");
    }
    void game()
    {
    	srand((unsigned int)time(NULL));
    	int ret = rand() % 100 + 1;
    	while (1)
    	{
    		printf("猜数字\n");
    		int guess = 0;
    		scanf("%d", &guess);
    		if (guess > ret)
    		{
    			printf("猜大了\n");
    		}
    		else if (guess < ret)
    		{
    			printf("猜小了\n");
    		}
    		else
    		{
    			printf("猜对了\n");
    			break;
    		}
    	}
    }
    int main()
    {
    	int input = 0;
    	do
    	{
    		menu();
    		scanf("%d", &input);
    		switch (input)
    		{
    		case 1:
    			game();
    			break;
    		case 0:
    			break;
    		default:
    			printf("输入错误,请重新输入");
    		}
    	} while (input);
    	return 0;
    }

    三:总结

    此程序主要为了熟悉循环和分支的具体用法,并且学会利用时间戳和rand函数生成随机数。

    本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!

    在线客服
    服务热线

    服务热线

    4008888355

    微信咨询
    二维码
    返回顶部
    ×二维码

    截屏,微信识别二维码

    打开微信

    微信号已复制,请打开微信添加咨询详情!