C语言---猜数字游戏
猜数字游戏代码
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void meun()
{
printf("**********************\n");
printf("******* 1.play *******\n");
printf("******* 0.quit *******\n");
printf("**********************\n");
}
void game()
{
int rand_number = rand() % 100 + 1;//随机数的范围是1~100
int input2 = 0;
int right = 100;//最大是100
int left = 1;//最小是1
int count = 5;//猜数字机会
printf("猜数字游戏开始\n开始猜数字\n");
while (count)
{
printf("请输入:");
scanf("%d", &input2);
if (input2 > rand_number)
{
count--;
right = input2;
printf("猜大了,范围是 %d--%d\n",left,right);
printf("你还有%d机会\n", count);
}
if (input2 < rand_number)
{
count--;
left = input2;
printf("猜小了,范围是 %d--%d\n", left, right);
printf("你还有%d机会\n", count);
}
if (input2 == rand_number)
{
printf("恭喜你猜对了\n");
break;
}
}
if (count == 0)
{
printf("游戏失败\n");
printf("要猜的数字是%d", rand_number);
}
}
int main()
{
srand((unsigned int)time(NULL));
meun();
regain:
printf("请选择:");
int input1 = 0;
scanf("%d", &input1);
switch (input1)
{
case 1:
{
printf("进入游戏\n");
game();
break;
}
case 0:
{
printf("退出游戏\n");
break;
}
default:
{
printf("输入错误,请重新输入\n");
goto regain;
}
}
return 0;
}
猜数字游戏思路
1.菜单
2.玩游戏还是退出游戏
3.游戏–设置随机数
4.猜数字
1.菜单
void meun()
{
printf("**********************\n");
printf("******* 1.play *******\n");
printf("******* 0.quit *******\n");
printf("**********************\n");
}
提示玩家输入1
表示玩游戏,输入0
表示退出游戏
2.玩游戏还是退出游戏
运用 switch
语句实现
regain:
printf("请选择:");
int input1 = 0;
scanf("%d", &input1);
switch (input1)
{
case 1:
{
printf("进入游戏\n");
game();
break;
}
case 0:
{
printf("退出游戏\n");
break;
}
default:
{
printf("输入错误,请重新输入\n");
goto regain;
}
}
input1 = 1
进入游戏
input = 0
退出游戏
input1
等于其他数字时提示输入错误,重新输入
重新输入用goto
语句实现,在上面这个代码中,会跳到regain
这里
3.游戏–设置随机数
使用rand()
函数设置随机数,为确保每次运行程序时生成的随机数序列不同,通常需要使用srand()
函数来设置随机数种子
srand()
函数使用time(NULL)
作为种子,意味着随机数种子会根据当前时间变化,从而使得每次运行程序生成的随机数序列不同
rand()
srand()
的头文件是stdlib.h
time()
的头文件是time.h
1 srand((unsigned int)time(NULL));
2 int rand_number = rand() % 100 + 1;//随机数的范围是1~100
4.猜数字
判断输入的数与随机数那个大,输入的数比较大就输出猜大了,输入的数比较小就输出猜小了,相等就输出猜对了,并且停止循环(运用break
)
void game()
{
int rand_number = rand() % 100 + 1;//随机数的范围是1~100
printf("猜数字游戏开始\n开始猜数字\n");
while (1)
{
printf("请输入:");
scanf("%d", &input2);
if (input2 > rand_number)
{
printf("猜大了\n");
}
if (input2 < rand_number)
{
printf("猜小了"\n);
}
if (input2 == rand_number)
{
printf("恭喜你猜对了\n");
break;
}
}
}
到这猜数字的基本思路就完成了
当然还可以改进,比如显示范围,多少次机会等等
left = 1
right = 100
表示随机数的范围是1~100
count = 5
表示有五次猜数字的机会
假设输入的input2 = 45
,如果猜大了,让right = input2
范围就变成了left -- right
即1 -- 45
;如果猜小了,让left = input2
范围就变成了left -- right
即45 -- 100
每次猜完机会减一,即count--
,当count == 0
时,机会为0
,游戏结束
void game()
{
int rand_number = rand() % 100 + 1;//随机数的范围是1~100
int input2 = 0;
int right = 100;//最大是100
int left = 1;//最小是1
int count = 5;//猜数字机会
printf("猜数字游戏开始\n开始猜数字\n");
while (count)
{
printf("请输入:");
scanf("%d", &input2);
if (input2 > rand_number)
{
count--;
right = input2;
printf("猜大了,范围是 %d--%d\n",left,right);
printf("你还有%d机会\n", count);
}
if (input2 < rand_number)
{
count--;
left = input2;
printf("猜小了,范围是 %d--%d\n", left, right);
printf("你还有%d机会\n", count);
}
if (input2 == rand_number)
{
printf("恭喜你猜对了\n");
break;
}
}
if (count == 0)
{
printf("游戏失败\n");
printf("要猜的数字是%d", rand_number);
}
}