| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:定义的 int 型但是读入的是字母该怎么处理?
只看楼主 加入收藏
hl117999232
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-9-9
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
定义的 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 编辑 ]
搜索更多相关主题的帖子: 字母 如何 用户 
2014-09-14 16:37
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
最灵活的处理是逐个字符读入再提取需要的数据

授人以渔,不授人以鱼。
2014-09-14 18:39
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:10 
就不看你代码里.. 自己加进去吧.
程序代码:
// 当做这里开始输入价格吧, 如果不是可以  直接!cin  
//输入错误类型则进入while块  正确类型则跳过该循环
while(!(cin >> price))   
{
   // 最简单的就是
    cin.clear();    //必须先清除错误
    cin.sync();    //然后再清空缓冲.
    cout << "Enter the number again: ";
}


hl928452957@gmail点com

2014-09-14 19:51
快速回复:定义的 int 型但是读入的是字母该怎么处理?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024268 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved