首页
社区
课程
招聘
[旧帖] [求助]c++输入缓冲问题,哪位大哥帮忙看看 0.00雪花
发表于: 2010-11-27 22:21 1082

[旧帖] [求助]c++输入缓冲问题,哪位大哥帮忙看看 0.00雪花

2010-11-27 22:21
1082
#include <iostream>
using namespace std;
const int ArSize = 6;
int main()
{
  float naaq[ArSize];
  cout << "enter the naaqs(new age awareness quotients) "
          << "of\nyour neighbors. program terminates "
          << "when you make\n" << ArSize << " entries"
          << "or enter a negative value.\n";

  int i = 0;
  float temp;
  cin >> temp;
  while(i<ArSize && temp >= 0)
  {
          naaq[i++] = temp;
          if(i<ArSize)
                  cin >> temp;
  }
  if(i==0)
          cout << "no data--bye\n";
  else
  {
    cout << "enter your naaq: ";
        float you;
    cin >> you;
        int count = 0;
        for(int j=0;j<1;j++)
                if(naaq[j]>you)
                        count++;
        cout << count;
        cout << " of your neighbors have greater awareness of\n"
                << "the new age than you do.\n";
  }
  return 0;
}
这段代码是c++ primer plus(第四版)中文版 第146面的 程序清单6.5 and.cpp
为什么调试的时候,一行输入的数字超过六个程序就直接结束了,都没有机会输入float you的机会。后来在cin >> you;前面加了cin.get();就可以了(多输入几个就要加几句),觉得这样做不行,因为怎么知道会加少个呢?于是便在cin >> you;前面加   
cin.clear();
cin.sync();
终于可以输入 float you的值了,但是前面的naaq数组中只一个数字(本来是要有六个的)。不知道原因,哪位大哥帮忙看看,谢谢!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 2134
活跃值: (14)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
2
超过6个的后一个就是you的输入,不需要输入了
  for(int j=0;j<1;j++)
不知道这个程序想干嘛,按照猜想的意思,这里是不是j<argsize?
2010-11-27 22:57
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
[QUOTE=gioni;895867]#include <iostream>
using namespace std;
const int ArSize = 6;
int main()
{
  float naaq[ArSize];
  cout << "enter the naaqs(new age awareness q...[/QUOTE]

这个程序没有问题,
我在VC下面测试了,不会出现你说的情况,一切正常,是否你输入过负数?

结束条件是:输入6个或者输入一个负数!

如果你在一行进行输入,那么超过6个部分自然会被后面CIN接收。这个要注意。
肯定显示了enter your naaq:这个提示的,只是不需要等待你输入了。
因为你输入的已经放入键盘缓冲区了。Cin也是从缓冲区里面去提取的。
2010-11-28 00:22
0
雪    币: 16
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
这个代码应该是有笔误的。

正确的应该是:for(int j=0;j<i;j++)
                        if(naaq[j]>you)
                                count++;
把那个i写成了1!

他本来意思是要比较输入的数据有几个比you大!
2010-11-28 00:42
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢两位大哥,是我把i写成1了
2010-11-28 14:15
0
雪    币: 343
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
原来是笔误!!!!
2010-11-29 13:55
0
游客
登录 | 注册 方可回帖
返回
//