小枫是一个喜欢在网络上玩各种竞猜游戏的有为青年,尤其喜欢那种玩游戏还能拿奖品的游戏项目。
话说有一天,他的狐朋狗友小鹏向他推荐了一款游戏,名为数字猜猜看,只要能猜对数字,就可以赢取iphone13和Watch Series 7这两个重量级的苹果产品,说的小枫心里一阵春心荡漾,迫不及待的找小鹏要了数字猜猜看的网址,登录了上去,开始玩了起来。
玩了一会,小枫感觉有些不对劲,不管怎么猜,都猜不对数字,网站一会提示你猜大了,一会提示你猜小了,就是猜不到真实的数字,一阵不好的感觉在小枫的头脑中滚动。
小枫觉得不能就这样算了,必须要找到问题的根源,于是他就利用自己曾经在蓝翔技校学习的电脑知识,一不小心的潜入了网站的后台,直达核心源码,发现了一个小秘密。。。
void menu()
{
printf("*******猜数字游戏********\n");
printf("*********1.play**********\n");
printf("*********0.exit**********\n");
printf("*************************\n");
}
void game()
{
int guess;
int res = rand() % 100 + 1;
while (1) {
printf("请输入你要猜的数字>");
scanf("%d", &guess);
if (res > guess)
{
printf("大了\n");
}
else if (res<guess)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
menu();
int a = 0;
srand((unsigned int)(time(NULL)));
do {
printf("请输入选项>");
scanf("%d", &a);
switch (a)
{
case 1:
game();
break;
case 0:
printf("退出游戏");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (a);
}
核心代码很简单,C语言写的一个小程序,使用了一个C语言内时间的库函数生成随机数,然后将随机数控制在100以内,猜100以内的数字,这没有什么问题,但是小枫发现主要的问题是在这个game函数上。
void game()
{
int guess;
int res = rand() % 100 + 1;
while (1) {
printf("请输入你要猜的数字>");
scanf("%d", &guess);
if (res > guess)
{
printf("大了\n");
}
else if (res<guess)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
经过仔细的研究和复盘,原来这个函数在if判断上出现了逻辑错误,会误导他人,输入错误的数字,如果这样输入下去,永远也猜不对。
于是小枫就将核心源码进行了修改,将if判断修改为正确的逻辑。
void game()
{
int guess;
int res = rand() % 100 + 1;
while (1) {
printf("请输入你要猜的数字>");
scanf("%d", &guess);
if (guess>res)
{
printf("大了\n");
}
else if (guess<res)
{
printf("小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
这样小枫就觉得可以欢天喜地的赢取苹果产品大礼包啦!小枫按照修改后的代码,猜对了数字,向网站提交了收获礼品的家庭地址。开心的和女朋友睡了过去。
然而一等好几天,依然没有收到苹果产品的大礼包,小枫觉得自己遭到了电信诈骗,一怒之下,举报了猜数字网站,还冲着电脑骂了一句,他妈的坏人。
突然,一阵急促的敲门声打乱了小枫的情绪,小枫转过头,大叫了一声,谁呀,能轻点吗?门不需要用钱买呀。
我们是公安局网安大队,请开下门。
小枫一听,眉头一紧,一阵不好的预感涌上心头。。。
(未完待续.......)