@[TOC]
前言:
1.博主实力有限,有什么错误的地方,请指出,非常感谢! |
2.猜数字游戏最麻烦的地方在于:制造那个要猜的数字即随机数。详见我的另外一篇博客:随机数的生成。 |
|
思路:
![](https://ucc.alicdn.com/images/user-upload-01/img_convert/542d001df6b75c0e9857cc8a66b51370.gif?x-oss-process=image/resize,w_1400/format,webp)
void menu()
{
printf("**************************\n");
printf("*****1.Play***************\n");
printf("*****0.Exit***************\n");
}
int main ()
{
srand((size_t)time(NULL));//设置随机数种子
int choice = 0;//注意别把choice放到do语句里面,
//因为当while判断循环条件choice时,choice的生命周期已经结束。
do
{
menu();
scanf("%d", &choice);
switch (choice)//注意break的使用。
{
case 1:game();
break;
case 0:printf("退出\n");
break;
default:printf("选择错误\n");
break;
}
} while (choice);
return 0;
}
void game()
{
int a = rand()%100;//通过%运算符生成100以内的随机数。
int x = 0;
while (1)
{
printf("请输入你所猜的数:");
scanf("%d", &x);
if (x == a)
{
printf("恭喜你猜对了,该数字是%d\n", a);
break;
}
else if(x>a)
{
printf("猜大了\n");
}
else
{
printf("猜小了\n");
}
}
}
全部代码:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**************************\n");
printf("*****1.Play***************\n");
printf("*****0.Exit***************\n");
}
void game()
{
int a = rand()%100;//通过%运算符生成100以内的随机数。
int x = 0;
while (1)
{
printf("请输入你所猜的数:");
scanf("%d", &x);
if (x == a)
{
printf("恭喜你猜对了,该数字是%d\n", a);
break;
}
else if(x>a)
{
printf("猜大了\n");
}
else
{
printf("猜小了\n");
}
}
}
int main ()
{
srand((size_t)time(NULL));//设置随机数种子
int choice = 0;//注意别把choice放到do语句里面,
//因为当while判断循环条件choice时,choice的生命周期已经结束。
do
{
menu();
scanf("%d", &choice);
switch (choice)//注意break的使用。
{
case 1:game();
break;
case 0:printf("退出\n");
break;
default:printf("选择错误\n");
break;
}
} while (choice);
return 0;
}
总结:
1.程序需要的函数较少,代码较短,因此可以不需要自定义函数库。 |
2.随机数的生成需要格外注意。最好别把srand()放到循环中 |
|
|