|
|
发表于 2023-10-24 22:41:56
|
显示全部楼层
根据给定的代码,输出cnt等于0的原因是在第一个循环中,数组b被初始化为全零。而在第二个循环中,对每个元素a[j],如果b[a[j]]等于0,就会将cnt加一。由于b数组一开始全为零,所以对于任意的j,都有b[a[j]]等于0,导致cnt始终为n,即等于0。
可能的修改如下:
- #include <iostream>
- #include <vector>
- using namespace std;
- const int N = 1010;
- int main() {
- int n;
- cin >> n;
- vector<int> a(n);
- vector<int> b(N, 0);
- for (int i = 0; i < n; i++) {
- cin >> a[ i];
- b[a[ i]]++;
- }
- int cnt = 0;
- for (int j = 0; j < N; j++) {
- if (b[j] == 0)
- cnt++;
- }
- cout << cnt << endl;
- return 0;
- }
复制代码
这个修改使用了vector代替数组,并将b初始化为全零。然后在第一个循环中,将计数操作放在读取输入的同时进行。接着在第二个循环中,遍历b数组的所有元素,统计为零的个数,从而得到正确的cnt值。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案 |
|