首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >初探C语言|手把手带你手撕猜数字游戏

初探C语言|手把手带你手撕猜数字游戏

作者头像
我想吃余
发布2025-03-31 16:12:20
发布2025-03-31 16:12:20
3530
举报
文章被收录于专栏:C语言学习C语言学习

前言

作为一名编程初学者,最令人兴奋的时刻莫过于实现自己的第一个完整项目。今天,我们将一起手撕猜数字游戏,并逐步解析实现过程。这不仅能帮助你巩固 C 语言的基础知识,还能感受到编程的乐趣。


一、游戏规则

1.程序会随机生成一个 1 到 100 的整数,作为目标数字。 2.玩家需要不断输入猜测数字,程序会根据玩家的输入给出以下提示:

  • “猜小了”:输入值小于目标值;
  • “猜大了”:输入值大于目标值;
  • “恭喜你!猜对了!”:输入值等于目标值,游戏结束。
  • 3.玩家在猜对后,可以选择继续游戏或退出。

二、代码实现

完整代码

我们先来看看完整代码,再带着我们的疑问来抽丝剥茧。

代码语言:javascript
复制
#define  _CRT_SECURE_NO_WARNINGS 1

#include<stdio.h>
#include<time.h>
#include<stdlib.h>


void menu()
{
	printf("*************************\n");
	printf("*****  1.Play game  *****\n");
	printf("*****  2.Exit game  *****\n");
	printf("*************************\n");
}

void menu2()
{
	printf("*****************************\n");
	printf("*****  1.Continue game  *****\n");
	printf("*****    2.Exit game    *****\n");
	printf("*****************************\n");
}

void Game()
{
	int input = 0;
	int ret = rand() % 100 + 1;//随机生成1-100的数字
	while (1) {
		printf("请输入你要猜的数字(1-100)\n");
		scanf("%d", &input);
		if (input < ret) {
			printf("猜小了!\n");
		}
		else if (input > ret) {
			printf("猜大了!\n");
		}
		else {
			system("cls");
			printf("恭喜你!猜对了!!!\n");
			break;
		}
	}
}

int main()
{
	srand((unsigned int)time(NULL));// 设置随机数种子
	int n = 0;
	int flag = 0;
	menu();//菜单1
	while (1) {
		scanf("%d", &n);//清屏
		system("cls");
		switch (n) {
		case 1: {
			Game();//实现猜数字
			menu2();//菜单2
			break;
		}
		case 2: {
			flag = 1;
			break;
		}
		default: {
			printf("输入数据错误,请重新输入!\n");
			break;
		}
		}
		if (flag == 1) {
			printf("成功退出游戏!\n");
			break;
		}
	}
}

核心知识点解析

随机数生成
代码语言:javascript
复制
srand((unsigned int)time(NULL)); // 设置随机种子
int target = rand() % 100 + 1;   // 生成 1 到 100 的随机整数
  • rand():生成一个伪随机数,范围是 0 到 RAND_MAX(32767)。一般需要配合srand()来使用。
  • srand():设置随机种子,保证每次运行程序时,生成的随机数序列不同。
  • 一个冷知识——任意的数取模100的取值范围为0~99。这里再加上1,即可实现1到100的范围。10,1000,10000都是一样的道理。
  • time(NULL)返回值即为时间戳且并非int整型,所以我们可以用强制类型转换将其转为int类型。这里的NULL为空指针。
循环与条件判断

通过简单的条件判断 (if-else) 提示玩家目标值的范围,并在玩家猜中后退出循环。

代码语言:javascript
复制
if (input < target) {
    printf("猜小了!\n");
} else if (input > target) {
    printf("猜大了!\n");
} else {
    printf("恭喜你!猜对了!!!\n");
    break;
}
switch分支语句的使用

使用 switch 让逻辑分支显得直观,尤其是在菜单选项较多时,可读性更高。如果改用 if-else,代码可能变得冗长。 在这里使用switch是更加合理的。

代码语言:javascript
复制
switch (n) {
case 1: {
	Game();//实现猜数字
	menu2();//菜单2
	break;
}
case 2: {
	flag = 1;
	break;
}
default: {
	printf("输入数据错误,请重新输入!\n");
	break;
}
}

三、总结

这个小项目涵盖了随机数生成、循环控制和条件判断等基础知识,非常适合刚入门C语言的小伙伴们去学习。

希望你通过这篇文章,能轻松完成自己的猜数字游戏项目,并在此基础上不断优化和创新!如有错误或者不足的地方欢迎留言指正和建议!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、游戏规则
  • 二、代码实现
    • 完整代码
    • 核心知识点解析
      • 随机数生成
      • 循环与条件判断
      • switch分支语句的使用
  • 三、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档