C语言:完成猜数字游戏

本文介绍了一个简单的猜数字游戏的C语言实现过程。通过定义menu函数显示游戏菜单,并使用do-while循环结合switch语句来控制游戏流程。文章重点介绍了如何使用srand函数设置随机数种子以确保每次运行游戏时生成不同的随机数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       此题的解决思路为:

       ①定义一个函数menu,每次玩游戏时输出menu

       ②在main函数中利用do--while循环以及switch语句选择玩游戏

       ③定义一个game函数,专门进行游戏部分

       此题需要注意的是:

       随机生成数字的过程需要调用srand(随机数的生成起点),srand里面的参数为time。

       //time:类型为long,所以我们强转为int型(unsigned int),参数为指针(不确定我们定为NULL)

       另外srand函数在整个代码中只调用一次,所以放在main函数里面。


#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 = 0;
	int n = 0;
	ret = rand()%101;
	//猜数字
	while (1)
	{
		printf("请猜数字:\n");
		scanf_s("%d",&n);
		if (n == ret)
		{
			printf("恭喜你猜对了\n");
			break;
		}
		else if (n < ret)
		{
			printf("猜小了:\n");
		}
		else
		{
			printf("猜大了:\n");

		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	//srand:随机数的生成起点
	//time:类型为long,所以我们强转为int型(unsigned int),参数为指针(不确定我们定为NULL)
	//srand函数在整个代码中只调用一次
	do{
		menu();
		printf("请选择:\n");
		scanf_s("%d", &input);
		switch (input)
		{
		case 1:
			printf("玩游戏\n");
			game();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);
	system("pause");
	return 0;
}

游戏是一个经典的编程练习,它要求程序生成一个随机,并让用户不断测该字,直到中为止。以下是使用C语言实现游戏的详细步骤和代码。 ### 生成随机 在C语言中,可以使用 `rand()` 函数来生成伪随机,为了确保每次运行程序时得到不同的随机序列,需要调用 `srand()` 并传入一个变化的种子值,例如当前时间戳[^1]。 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { srand(time(0)); // 使用当前时间作为随机种子 int number = rand() % 100 + 1; // 生成1到100之间的随机整 int guess = 0; int count = 0; printf("我已经想好了一个1到100之间的。\n"); do { printf("请这个1到100之间的:"); scanf("%d", &guess); count++; if (guess > number) { printf("你大了。\n"); } else if (guess < number) { printf("你小了。\n"); } } while (guess != number); printf("太好了,你用了%d次就到了答案。\n", count); return 0; } ``` ### 提供交互菜单 为了让用户可以选择开始或退出游戏,可以在主循环中提供一个简单的菜单界面[^2]。 ```c #include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> // Windows平台清屏函数需要用到 void menu() { printf("**********************************\n"); printf("********* 1. 开始游戏 ***********\n"); printf("********* 0. 退出游戏 ***********\n"); printf("**********************************\n"); } void game() { int ret = rand() % 100 + 1; int guess = 0; while (1) { printf("请输入你要字(1-100): "); scanf("%d", &guess); if (guess > ret) { printf("大了,再一次吧。\n"); } else if (guess < ret) { printf("小了,再一次吧。\n"); } else { printf("对了!\n"); break; } } } int main() { srand((unsigned int)time(NULL)); int choice = 0; do { system("cls"); // 清空屏幕 menu(); scanf("%d", &choice); switch (choice) { case 1: game(); break; case 0: exit(0); default: printf("输入错误,请重新输入。\n"); } } while (1); return 0; } ``` ### 输入验证(可选) 为了增强程序健壮性,可以添加对用户输入的验证功能,确保输入的是合法的字[^3]。 ```c int isValidNumber(char *ch) { while (*ch >= '0' && *ch <= '9') { ch++; if (*ch == '\0') { return 1; } } return 0; } ``` 此函数可以用于检查用户输入是否为有效的字字符串。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值