#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数组中只一个数字(本来是要有六个的)。不知道原因,哪位大哥帮忙看看,谢谢!
[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也是从缓冲区里面去提取的。