C语言编程猜数字小游戏

   本篇博客是自己学习C语言知识的总结,以写一篇猜数字小游戏进行巩固,代码如下所示:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//通过设置随机数的生成起点,使时间戳发生变化值 来使rand()生成随机数。整个工程只调用用一次

	do
	{    //打印菜单
		printf("*************************\n");
		printf("*********1.play**********\n");
		printf("*********2.exit**********\n");
		printf("*************************\n");
		printf("请输入选项:");
		scanf("%d", &input);
		int r = rand() % 100 + 1; //生成随机数
		int g = 0;
		int count = 5;
		switch (input)
		{
		case 1://玩游戏
			while (count)
			{
				printf("请猜数:");
				scanf("%d", &g);
				if (r < g)
				{
					printf("猜大了\n");
					count--;
					if (count == 0)
					{
						printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
						break;
					}
					printf("你还有%d次机会\n", count);
				}
				else if (r > g)
				{
					printf("猜小了\n");
					count--;
					if (count == 0)
					{
						printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
						break;
					}
					printf("你还有%d次机会\n", count);
				}
				else
				{
					printf("恭喜你答对了\n");
					break;
				}
			}
			break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请再次选择\n");
			break;
		}
	} while (input);

	return 0;
}

       这种写法就是一口气整完,代码层次看着就是有点没有结构化;下面将采用对代码进行模块化进行书写,见下文:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>



/*                1.游戏菜单              */
void menu()
{
	printf("*************************\n");
	printf("*********1.play**********\n");
	printf("*********2.exit**********\n");
	printf("*************************\n");
}



/*              2.游戏规则制定                  */
void game()
{
	int r = rand() % 100 + 1;  //生成随机数
	int g = 0;                //自己猜的数字
	int count = 5;            //猜数设置的机会
	while (count)
	{
		printf("你一共有%d次机会猜数字\n", count);
		printf("请猜数:");

		scanf("%d", &g);
		if (r < g)
			{
				printf("猜大了\n");
				//count--;  
			}
		else if (r > g)
			{
				printf("猜小了\n");
				//count--;
			}
		else
			{
				printf("恭喜你答对了\n");
				break;
			}count--;  //将count--放到分支结束 减少count--书写的次数
		if (count == 0)
			{
				printf("你用完了所有机会,游戏失败下次再来,正确数字是:%d \n", r);
			}
	}
}



/*                  3.主函数               */
int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));//通过设置随机数的生成起点,使时间戳发生变化值 来使rand()生成随机数。整个工程只调用用一次

	do
	{ 
		menu();  //调用menu()函数  打印菜单         

		printf("请输入选项:");
		scanf("%d", &input);
		switch (input)
		{
		case 1://调用game()函数  开始启动游戏
			game();
			break;
		case 2:
			printf("退出游戏\n");
			break;
		default:
			printf("输入错误,请再次选择\n");
			break;
		}
	} while (input);

	return 0;
}

         这样的板块设计可以说是通俗易懂,层次感比较好,能够帮助读者更好梳理代码的逻辑。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值