我也是才学了一段时间编程,下面的解法有点粗糙,没时间优化,大家可以来优化一下:vc6.0编译
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
int random(int x, int y)
//产生x-y范围的随机数
{
int num;
srand ((unsigned)time(NULL));
num=rand()%(y-x+1)+x;
return num;
}
int enquire(int n)
//输出询问语句
{
cout<<"是"<<n<<"吗?";
cin>>n;
return n;
}
void main()
{
int number, response, temp;
int i=0, low=0 ,high=1000;
cout<<"数字选项表示:"<<endl;
cout<<"1"<<'\t'<<"再大些!"<<endl;
cout<<"2"<<'\t'<<"再小些!"<<endl;
cout<<"3"<<'\t'<<"就是这个数!"<<endl;
number=random(low, high);
temp=number;
response=enquire(number);
while (response != 3)
/*下面的2个判断功能也可以写成函数实现*/
{
if (response==1)
{
low=number;
number=random(low, high);
while (temp==number)
//若生成的随机数与前面相同,则重新生成
number=random(low, high);
temp=number;
response=enquire(number);
}
else
{
high=number;
number=random(low, high);
while (temp==number)
number=random(low, high);
temp=number;
response=enquire(number);
}
}
cout<<"太棒了!"<<endl;
}
注:特别是最后电脑将要猜到正确答案时,电脑可能再输出原来出现过的数字,这里需要优化。