【项目-猜数字游戏】通过本题学习一些系统函数。
随机产生一个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; }