定义的 int 型但是读入的是字母该怎么处理?
初学C++,这个是我们的作业,题目:假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数),提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;直到猜对为止,并给出提示。原本我写的是一段很简单的代码,遇到输入字母或者所输入的数字不在指定范围内就直接提示输入错误然后结束程序。现在我想改得完善些,但是发现不知道如何处理输入的是字母的情况。因为定义的num是int型,所以读入字母后就跳不出第46行代码所写的那个循环了。求助一下~灰常感谢哦!
程序代码:
1.//猜价格游戏 2.#include<iostream> 3.#include<cstdlib> 4.#include<ctime> 5.using namespace std; 6.int judge(int& num,int& i) //判断输入的数在不在取值范围 7.{ 8. if(num>0&&num<1000) 9. i=1; 10. else 11. i=0; 12.} 13.void guss_price(int price,int& num,int& i,int& go) //猜价格 14.{ 15. if(num > price){ 16. cout<<"Higher than the price,try again!"<<endl; 17. cin>>num; 18. judge(num,i); 19. } 20. else if(num < price){ 21. cout<<"Lower than the price,try again!"<<endl; 22. cin>>num; 23. judge(num,i); 24. } 25. else 26. { 27. cout<<"Bingo!!"<<endl; 28. i=2; 29. go=0; //改变go的值,跳出大循环 30. } 31.} 32.int main() 33.{ 34. int price,num,i,go=1; 35. srand(time(NULL)); //随机数种子 36. price = rand()%1000; //取得随机数 37. cout<<"please guess the price:"<<endl; 38. cin>>num; 39. judge(num,i); 40. while(go==1) //进入大循环 41. { 42. while(i==1) 43. { 44. guss_price(price,num,i,go); 45. } 46. while(i==0) 47. { 48. cout<<"WRONG NUMBER!"<<endl; 49. cout<<"please input another number:"<<endl; 50. cin>>num; 51. judge(num,i); 52. } 53. 54. } 55. return 0; 56.}
[ 本帖最后由 hl117999232 于 2014-9-14 16:41 编辑 ]