我有一个for循环和一个变量C. 循环从0开始,预计运行C次,但实际上它运行C-1次。
这是我的代码:
vector<int> v(1000) //Allocated globally
int M, S, C;
cin>>M>>S>>C;
//cout<<M<<" "<<S<<" "<<C;
int fi=0, la=0;
for(int i=0; i<C; i++)
{
int f;
cin>>f;
if(i==0l){ fi = f;}
v[f] = f;
cout<<i<<" "<<f<<" "<<v[f]<<endl;
if(i==C-1){ la = f;}
}
这是我的测试用例 -
3 27 16
2
3
5
6
8
9
10
13
14
15
16
19
20
21
22
27
Xcode输出:
0 2 2
1 3 3
2 5 5
3 6 6
4 8 8
5 9 9
6 10 10
7 13 13
8 14 14
9 15 15
10 16 16
11 19 19
12 20 20
13 21 21
14 22 22
我在Mac上使用Xcode会产生影响。 变量fi和la用于查找列表的第一个和最后一个元素。
我想知道我的for循环代码有什么问题,为什么它不迭代C次。
由于
答案 0 :(得分:0)
你的循环 迭代C
次。这是经典的Zero-Based Numbering问题。
让我解释一下使用C
16 和编号列表的示例:
所以你看到你的lopp 做了迭代了16次。要从 0 转到 16 ,实际上会再次迭代一次,所以 17 次。