看书上有个例子,但跳不出循环 不能继续执行。请问下列数组和模板的解决方法
问题比较菜 大家多包涵数组
#include "iostream.h"
int main()
{
int input=0;
int count=0;
bool flags;
int array[5];
cout<<"enter a number!"<<endl;
for(int i=0;i<6;++i)
{
cin>>input;
array[++count]=input;
if (i>=5) 
break;
}
//为什么后面执行不了 总是继续循环 怎样改?
int sum;
for(int j;j<6;j++)
{
sum+=array[j];
}
return 0;
}模板
#include "vector"
using namespace std;
int main()
{
vector<int> number;
int z;
while (cin>>z)
 {
number.push_back(z);
}
//为什么后面执行不了 
int y;
for(int i=0;i<number.size();++i)
{
y+=number[i];
}
cout<<y<<endl; return 0;
}

解决方案 »

  1.   

    for(int j;j<6;j++)//j没有赋初值
    {
    sum+=array[j];
    }
    return 0;
      

  2.   

    cin>>z
    该句始终在等终端输入
    即使你输入一次,循环回来还是在等待输入
    自然无法向后执行
      

  3.   

    while (cin>>z)//是不是你要输入零才可以结束?
     {
    number.push_back(z);
    }
      

  4.   

    不是吧 这是essential c++上的原例啊!!!!!
    各位请多援手了!那应当怎样改呢?
      

  5.   

    #include "iostream.h"
    int main()
    {
    int input=0;
    int count=0;
    bool flags;
    int array[5];
    cout<<"enter a number!"<<endl;
    for(int i=0;i<6;++i)
    {
    cin>>input;
    array[++count]=input;  //** i==4时. 本句实际为: array[5] = input. 已经越界. 这个时候实际上会把 input 的值赋给i, 因为i就是紧接着array定义的一个变量,当然也不一定如此,不同的编译器可能会有不同的解释, 很多情况下数组越界这种错误, 其操作是未定义的(不可知的).
    if (i>=5) 
    break;
    }
    //为什么后面执行不了 总是继续循环 怎样改?
    int sum;
    for(int j;j<6;j++)
    {
    sum+=array[j];
    }
    return 0;
    }模板
    #include "vector"
    using namespace std;
    int main()
    {
    vector<int> number;
    int z;
    while (cin>>z)  // 也许你以为 cin>>z 会返回你输入的那个值, 实际并非如此, 它返回的是一个ostream&, 所以你肯定得不到期望的执行结果.
     {
    number.push_back(z);
    }
    //为什么后面执行不了 
    int y;
    for(int i=0;i<number.size();++i)
    {
    y+=number[i];
    }
    cout<<y<<endl; return 0;
    }