【项目-猜数字游戏】通过本题学习一些系统函数。
随机产生一个1000内的数字,要求用户猜测这个整数。输入一个猜测想的整数,判断是否与产生的随机数相等,由屏幕显示判断结果。如果猜得不对,给出“大了”或“小了”的提示,直到猜出这个数为止。(可以再加一个要求,猜了几次才得到正确结果。)
参考解答:
#include <iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main(void)
{
int n,num,count=1;
srand(time(0)); //time(0)返回值作种子
num=rand()%1000;
do
{
cout<<"猜一个数:";
cin>>n;
if(n==num)
break;
else if(n>num)
cout<<"大了!"<<endl;
else
cout<<"小了!"<<endl;
count++;
}while(true);
cout<<"历经"<<count<<"次,猜对了。"<<endl;
return 0;
}
下面是一个被同学们普遍采用的错误版本。在相互的参考当中,以及从网络上找到帮助之中,还要自己学会阅读和分析代码。
我在程序中做了些注释,请同学们思考。在http://blog.csdn.net/u012369599/article/details/16830477中我和那篇文章的主人做了些交流,可参阅。
#include <iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
int i,n,s,num=0;
srand(time(0));
cin>>s;
for(i=0; i<1; i++) //——这个只能“循环”一次,i++之后i<1将为假,何用?
{
n=rand()%1000;
while(s>n) //如果猜的数一直偏大,就这样处理,似乎还有理
{
cout<<"你输大了,再小一点!"<<endl;
cin>>s;
num++;
}
while(s<n) //猜小了将落入这个循环。可是,再猜大了呢?
{
cout<<"你输小了,再大一点!"<<endl;
cin>>s;
num++;
} //两趟while循环下来,只能“单向”的太大或太小,多运行两次你会发现,猜小了之后只要再猜大一次了,一定说正确。
}
cout<<"恭喜你,输入正确"<<"共输入"<<num<<"次"<<endl;
return 0;
}