C++循环体中的局部变量怎样在每次循环后内存清零,进行下次循环的时候再重新赋值

在做一道题
依次输入每个人的名字然后输入成绩,每个名字后面都跟着每个人的成绩,不是把人名输完再输成绩。
然后要求统计每个人几次成绩的和,依次输出每个人姓名以及他们的总成绩。这个怎么做?
#include
#include
#include

using namespace std;

int main()
{
int r; vector name;
cout<<"人数:";
cin>>r;

int *sum = new int[r];
int p=0;int w=0;
while(w!=r)
{
typedef vector::size_type longing;
cout<<"姓名:";

int count=-1;

    string n;

while (cin>>n) {
    name.push_back(n);
    count++;
    p++;
    cout << "请输成绩:";
    int x;

    vector<int> grades;
    typedef vector<double>::size_type longing;
    while (cin>>x)
   {
    grades.push_back(x);
   }
    int Sum=0;
    longing l=grades.size();
    for(int i=0;i!=l;i++)
    {

        Sum=grades[i]+Sum;
        if (i==l-1) {
            int e=count;
            sum[e]=Sum;

        }

    }
   }

w++;

}
for (int i=0;i!=r;i++) {

    cout<<name[i]<<"      "<<sum[i]<<endl;
}
delete [ ] sum;

        return  0;

}
第二次循环的时候n还是第一次输入的名字,这个怎么办

6个回答

string n("");初始化变量

sinat_32051231
sinat_32051231 这是写在哪的
接近 5 年之前 回复
sinat_32051231
sinat_32051231 这是写在哪的
接近 5 年之前 回复

vector grades;
->vector * grades;
循环里面
grades = new vector();

 vector<int> grades;
->vector<int> * grades;
循环里面
grades = new vector<int>();
sinat_32051231
sinat_32051231 用了这个写法后面的push_back()、.size()、还有求和的时候都报错怎么办
接近 5 年之前 回复
  1. 我试着执行了一下 第二次也正常啊
  2. while (cin >> x) 这个怎么结束循环的呢?
sinat_32051231
sinat_32051231 也许是编译器的问题。。
接近 5 年之前 回复
sinat_32051231
sinat_32051231 也许是编译器的问题。。
接近 5 年之前 回复

写哪里?就是你原来的string n;改写为string n("");就叫初始化变量,肯定在课堂谈恋爱,这都不知道啊。

string, vector 这些标准类默认是不需要初始化的 都有默认构造函数 string默认为“” vector默认size=0

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐