永发信息网

C++中,定义的是int型,但是输入的是字母,怎么处理?

答案:6  悬赏:50  手机版
解决时间 2021-02-23 15:23
  • 提问者网友:末路
  • 2021-02-23 03:26
初学C++,这个是我们的作业,题目:假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数),提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;直到猜对为止,并给出提示。

原本我写的是一段很简单的代码,遇到输入字母或者所输入的数字不在指定范围内就直接提示输入错误然后结束程序。现在我想改得完善些,输错后还可继续输入直到正确为止。但是发现不知道如何处理输入的是字母的情况。因为定义的num是int型,所以读入字母后就跳不出第46行代码所写的那个循环了。求助一下~灰常感谢哦!

程序代码:

1.//猜价格游戏
2.#include
3.#include
4.#include
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!"<17. cin>>num;
18. judge(num,i);
19. }
20. else if(num < price){
21. cout<<"Lower than the price,try again!"<22. cin>>num;
23. judge(num,i);
24. }
25. else
26. {
27. cout<<"Bingo!!"<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:"<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!"<49. cout<<"please input another number:"<50. cin>>num;
51. judge(num,i);
52. }
53.
54. }
55. return 0;
56.}
最佳答案
  • 五星知识达人网友:老鼠爱大米
  • 2021-02-23 04:09
认为前面的输入数字结束,不接收这个字符;当后面再接收这个字符时出错。
全部回答
  • 1楼网友:有你哪都是故乡
  • 2021-02-23 08:13
重装软件。。。
  • 2楼网友:撞了怀
  • 2021-02-23 06:43
这个问百度吧,太难了
  • 3楼网友:醉吻情书
  • 2021-02-23 05:23
可以把int型改为 char类型 ,或者输入字符的ASCII码
  • 4楼网友:杯酒困英雄
  • 2021-02-23 05:14
字符型根据ANSII码转换为对应数字,如果打印这个int变量的话还是数字。 满意请采纳。
  • 5楼网友:等灯
  • 2021-02-23 04:49
#include void main() { char ch; printf("请输入一个字符:\n"); ch=getchar(); if(ch>='a'&&ch<'z'||ch>='A'&&ch<='Z') printf("该字符是字母"); else if(ch>='0'&&ch<='9') printf("该字符是数字"); else printf("该字符是特殊字符"); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯