【C语言】猜数字小游戏(1-100)

本文详细介绍了如何在C语言中实现一个简单的猜数字游戏,包括菜单设计、随机数生成和游戏逻辑。程序由菜单部分、游戏主体和主程序组成,通过用户输入选择是否玩游戏,游戏内随机生成1到100的数字让用户猜测,直到猜中为止。
摘要由CSDN通过智能技术生成

目录

实现功能

程序实现

菜单部分menu():

游戏主体部分game():

主程序部分main()

完整代码与最终实现效果:

完整代码:

实现效果:


实现功能

代码包括三部分,菜单部分menu()游戏主体部分game()主程序部分main(),用户进入程序后可选择是否进行游戏,不玩则退出程序,玩进行游戏进行猜 1~100 的数字,若不正确则提示猜数字是大了还是小了,直到猜中数字则结束本局,结束游戏后可再次进入菜单进行选择。

程序实现

菜单部分menu():

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

菜单给出两个选项,若用户输入0则退出游戏,若用户输入1则进入游戏

菜单效果:

游戏主体部分game():

void game() {
	int ret = rand() % 100 + 1;//用rand()函数生成随机数范围是0 -32767
		//%100+1控制随机数范围在1-100之间
	int guess = 0;

	while (1) {
		printf("请输入你猜测的数字>");
		scanf_s("%d", &guess);
		if (guess < ret) {
			printf("猜小了\n");
		}
		else if (guess>ret) {
			printf("猜大了\n");
		}
		else {
			printf("猜对了\n");
			break;
		}
	}
}

使用rand()函数生成一个伪随机数范围为0~32767,猜数字的范围为1~100所以我们对rand()%100+1控制生成随机数的范围为1~100并用int型变量ret接收随机数。

注意:使用rand()函数需要使用头文件#include<stdlib.h>

主程序部分main()

int main() {
	srand((unsigned int)time(NULL));
	while (1) {
		menu();//调用menu()函数,在屏幕上打印出菜单;
		int choose = 0;
		printf("请输入你的选择>");
		scanf_s("%d",&choose);
		if (choose == 1) {
			game();//调用game()函数进行猜数字游戏;
		}
		else if (choose== 0) {
			printf("成功退出游戏");
			break;
		}

	}
	return 0;
}

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( inta)

在主程序中我们使用srand()函数设置种子,这样能确保在一整局猜数字游戏中种子不发生改变,同时利用srand((unsigned int)(time(NULL))使用时间戳生成种子,保证不同局游戏中生成的种子不同,因为时间一直在变动,因此不同局游戏生成的随机数也不同。

 注意:使用时间戳需要使用头文件#include<time.h>

完整代码与最终实现效果:

完整代码:

#include <stdio.h>
#include<stdlib.h>
#include<time.h>
void menu() {
	printf("********************\n");
	printf("*******1.play*******\n");
	printf("*******0.exit*******\n");
	printf("********************\n");
}
void game() {
	int ret = rand() % 100 + 1;//用rand()函数生成随机数范围是0 -32767
		//%100+1控制随机数范围在1-100之间
	int guess = 0;

	while (1) {
		printf("请输入你猜测的数字>");
		scanf_s("%d", &guess);
		if (guess < ret) {
			printf("猜小了\n");
		}
		else if (guess>ret) {
			printf("猜大了\n");
		}
		else {
			printf("猜对了\n");
			break;
		}
	}
}
int main() {
	srand((unsigned int)time(NULL));
	while (1) {
		menu();//调用menu()函数,在屏幕上打印出菜单;
		int choose = 0;
		printf("请输入你的选择>");
		scanf_s("%d",&choose);
		if (choose == 1) {
			game();//调用game()函数进行猜数字游戏;
		}
		else if (choose== 0) {
			printf("成功退出游戏");
			break;
		}

	}
	return 0;
}

实现效果:


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值