C语言实现猜数字游戏
Posted Xua3055
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言实现猜数字游戏相关的知识,希望对你有一定的参考价值。
开始之前先推荐一篇博客:
C语言:素数求解的N种境界_碧瑶的博客呀-CSDN博客_素数求解的n种境界
然后开始今天的重头戏:猜数字游戏。
今天需要用到两个void函数,一个主函数。
我们先写一个菜单
void main() { printf("按下1开始游戏\\n"); printf("按下2退出游戏\\n"); }
这就完成了一个简易菜单的设置,主函数中我们直接调用就行了。
紧接着我们写主函数
#include<stdio.h> int main() { int input = 0;//定义输入数 do { menu()//引用菜单,注意菜单要写在循环的内部这样每次循环才会重新调用菜单 printf("请选择"); scanf("%d",&input); switch(input) { case 1://这里的1和0其实是菜单中说的1和0 printf("选择正确"); break; case 0: printf("选择错误"); break; default: printf("输入错误"); break; } }while(input);//这里注意 do while 循环的书写方式 return 0; }
主程序的书写就完成了。
之后我们还要在case 1 处引用一个game,来作为游戏的主要部分。
void game() { //首先我们要一个随机数,在C语言中如何产生随机数呢?我们可以用rand函数 int r = rand; }
打开MSDN,我们在这里看到rand使用之前还需要加一个srand来对它进行定义,怎么定义呢,直接srand加上括号就行了。
void game() { srand(1) int r = rand; }
可是这样会发现只有随着srand的变化,rand的值才会发生变化。如何将srand随机化呢?我们这里就要用到时间戳这一概念了。时间戳是当前时间与计算机起始时间之间的差值,我们在此引用时间戳。
void game() { srand(time(NULL)) int r = rand; }
MSDN上面写道,time_t * 说明这是一个指针,让其返回空值那么就可以输出一个数字。
类型转换后,代码变成
srand((unsigned int)time(NULL));
为了避免每一次都要重新同步时间戳,把这行代码放进主函数里面,这样子就可以让产生的数字真正随机。
之后的游戏部分就十分简单
int guess = 0; while (1) { printf("猜数字"); scanf("%d", &guess); if (guess > r) { printf("大了\\n"); } else if (guess < r) { printf("小了\\n"); } else { printf("恭喜恭喜你猜中了 (*^▽^*) \\n"); break;
整个程序就完成了
#include<stdlib.h>
#include<time.h>
void menu()
{
printf("按下 1 开始游戏 \\n");
printf("按下 0 结束游戏 \\n");
}
void game()
{
int r = rand() % 100 + 1;//rand max 为0-32767
int guess = 0;
while (1)
{
printf("猜数字");
scanf("%d", &guess);
if (guess > r)
{
printf("大了\\n");
}
else if (guess < r)
{
printf("小了\\n");
}
else
{
printf("恭喜恭喜你猜中了 (*^▽^*) \\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
printf("请选择:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("选择错误");
break;
}
} while (input);
return 0;
}
以上是关于C语言实现猜数字游戏的主要内容,如果未能解决你的问题,请参考以下文章