gpt4 book ai didi

c++ - int 变量不在 C++ 上重置?

转载 作者:行者123 更新时间:2023-11-30 03:52:36 26 4
gpt4 key购买 nike

所以,我的程序应该接收如下测试输入:

3
1 0 1
0 1 1
1 0 1
5
1 1 1 0 0
1 1 0 1 1
1 0 1 0 1
0 1 0 1 0
0 1 1 1 1
3
1 0 0
0 1 0
0 0 1
2
1 1
1 1
0

其中单值线 (n) 是位于以下 n 条目中的 NxN 矩阵的大小,如上所示。如果 n = 0,程序停止。输出必须是矩阵列中最大的总和。所以我期望这样的输出:

3
4
1
2

经过大量的努力和浪费的时间,我设法正确地获得了第一个输出,但我注意到有时会总结以下内容并提示某些变量没有被重置。这是我的代码:

#include <iostream>
using namespace std;

int pop = 0;

int main() {
int n, i, j, k;
cin >> n;
while (n!=0) {
int alunos[n]={0};
pop = 0;
for (i=0;i<n;i++) {
int array[n]={0};
for (j=0;j<n;j++) {
cin >> array[j];
if (array[j]==1) alunos[j]++;
}
}
for (k=0;k<n;k++) {
if(alunos[k]>pop) pop = alunos[k];
}
cout << pop << endl;
cin >> n;
}
return 0;
}

注意到我正在输出 pop(最大的总和)并在每次给出新的 n 时将其重置为 0。 alunos[n] 是一个包含每列总和的数组(也在每个 while 循环中重置)并且 array[n] 只是一个用于读取每行输入的辅助数组。我的输出是:

3
5
6
8

提前致谢!

最佳答案

cannot use initializers with variable length arrays .要么切换到某种容器:

std::vector<int> alunos(n);

或手动用零填充数组:

int alunos[n];
std::fill(alunos, alunos+n, 0);

另外,忽略错误是不健康的。不要这样做。

关于c++ - int 变量不在 C++ 上重置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30584222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com