本题的思路如下:
- 先由计算机“想”一个数请人猜,即让系统随机生成一个数字,需要用到随机函数rand()。只用rand()函数不能生成随机数,因为它每次生成的随机数都是相同的。也就是说,计算机不能产生真正的随机数。
- 那怎么才能生成一个随机数呢?srand()函数可以设置rand()的随机数种子来实现“随机化”。因为时间每时每刻都在变化,可以用time()返回值作为随机数发生器的种子。
srand(time(NULL)); int magic=rand();
3. 由计算机反馈结果,是猜大了还是猜小了,逐渐缩小范围,直猜成功为止。考虑会用到判断语句和循环语句。循环语句的结束条件就是和随机数相等。while (1) { scanf("%d",&guess); if(guess>magic) { printf("Wrong!It is too big!\n"); } else if(guess<magic) { printf("Wrong!It is too small\n"); } else { printf("Right"); break; } }
以下是全部代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main()
{
srand(time(NULL));
int magic=rand();
int guess;
printf("%d\n",magic);
while (1)
{
scanf("%d",&guess);
if(guess>magic)
{
printf("Wrong!It is too big!\n");
}
else if(guess<magic)
{
printf("Wrong!It is too small\n");
}
else
{
printf("Right");
break;
}
}
return 0;
}
下面是实现的功能:
注意:
1. 因为本题让计算机生成一个随机数,生成的随机范围太大,所以先输出随机数,来检验这段代码实现的功能。
2. rand() 函数和srand() 函数都需要用到头部文件<stdlib.h> , time() 函数需要用到 <time.h>头部文件,不写这些需要的头部文件会出错的。