c++ - 当循环重复时,为什么充当“计数”的变量的值不重置为零?
问题描述
这是我写的代码,我给你示例输入和输出只是为了更清楚我的问题
样本输入
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;
}
解决方案
std::count
与您的本地名称冲突count
。删除using namespace std;
,您将收到更有意义的错误消息: as unknown identifier count
,count
应在循环外声明:
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 带有隐式布尔转换。
注意:代码本身的逻辑可能仍然存在问题
推荐阅读
- angular - Angular Material 表数据源问题
- ios - 在后台执行 Apple 快捷方式
- docker - 如何让前端 Docker 容器找到后端容器 ip?
- dart - 在 Dart 中解析动态数据
- javascript - 如何使用 post 方法或在 javascript 中获取发送的数据
- .net - 如何避免在.NET中传递值类型参数时的装箱?
- javascript - PhoneGap/Cordova InAppBrowser 的定时弹出窗口?
- git - git difftool 挂起并且屏幕变得无响应
- android - 同步 FirebaseAuth.getInstance().signOut() 和异步 AuthUI.getInstance().signOut() 之间有什么区别吗
- wordpress - 通过子主题自定义主题