首页 > 解决方案 > 当循环重复时,为什么充当“计数”的变量的值不重置为零?

问题描述

这是我写的代码,我给你示例输入和输出只是为了更清楚我的问题

样本输入

2(t 的值,即测试用例)
3(输入数)

2 4 2

3
0 2 3

我得到的输出为

1
1

我应该得到输出

1
0

#include<iostream>
#include<vector>
#define ll long long
using namespace std;
int main()
{
int t;
cin >> t;
while (t--)
{
    vector<ll int> x;
    ll int n;
    cin >> n;
    ll int i, ent;
    for (i = 0; i < n; i++)
    {
        cin >> ent;
        x.push_back(ent);
    }

    vector<ll int>::iterator y,z;
    for(y=(x.begin());y!=(x.end()-1);y++)
        for (z = (x.begin() + 1); z != (x.end()); z++)
        {
            int count=0;
            if (*y + *z == *y * (*z))
                count++;
        }
    cout << count<<endl;
}
return 0;

}

更新代码:但仍然有同样的问题

    #include<iostream>
    #include<vector>
    #define ll long long
    int main()
    { 
    int t;
    std ::cin >> t;
    while (t--)
    {
    std :: vector<ll int> x;
    ll int n;
    std :: cin >> n;
    ll int i, ent;
    for (i = 0; i < n; i++)
    {
        std :: cin >> ent;
        x.push_back(ent);
    }

    std::vector<ll int>::iterator y,z;

    int count = 0;
    for(y=(x.begin());y!=(x.end()-1);y++)
        for (z = (x.begin()+1); z != (x.end()); z++)
        {
            if (*y + *z == *y * (*z))
                count++;
        }
    std ::cout << count<< std ::endl;
}
return 0;

}

标签: c++vectorvisual-c++

解决方案


std::count与您的本地名称冲突count。删除using namespace std;,您将收到更有意义的错误消息: as unknown identifier countcount应在循环外声明:

int count=0;
for(y=(x.begin());y!=(x.end()-1);y++)
    for (z = (x.begin() + 1); z != (x.end()); z++)
    {
         if (*y + *z == *y * (*z))
            count++;
     }
std::cout << count << std::endl;

注意:std::cout << function_name输出 1 带有隐式布尔转换。

注意:代码本身的逻辑可能仍然存在问题


推荐阅读