这个数组是如何工作的

时间:2013-12-07 13:58:40

标签: c++ arrays

#include<iostream>
void main()
{int v[100],n,k;
cin>>n;
for(int i=0;i<n;i++) cin>>v[i];
   k=0;
   for(int i=1;i<n;i++)
      if(v[i]==v[i-1]) k++;
      cout<<k;}

嘿伙计们,我对数组很新,并且想知道是否有人可以告诉我这行代码在做什么:

int v[100],n,k;

如果我理解正确,我假设我们声明一个具有100个可能值的数组。但是,nk在这做什么?之前我看到过类似的代码,看起来它的编程方式使得k的值将被插入到数组n中的次数。

我的理解是否正确?我知道代码的其余部分正在做什么,但这只是令人困惑的一行。

3 个答案:

答案 0 :(得分:2)

此处,vint的数组,而nkint类型的简单变量(scalars)。

这只是一个简写:

int v[100];
int n;
int k;

答案 1 :(得分:0)

您可以在一行中使用相同的声明spesifiers声明严重变量。例如

int width, height;

这里有两个声明为int类型的变量。您还可以在同一行中包含数组声明符。

int width, height, sizes[100];

这里声明了三个变量,宽度,高度,大小。变量大小声明为数组。

相当于

int width;
int height;
int sizes[100];

答案 2 :(得分:0)

v是一个包含100个元素的数组。 n是要查看的元素数量(可能在[0,100]范围内,或者当n> 100时,我们将遇到试图访问v [n]的界限问题) k用于计算v中的值等于v中的下一个值的次数。

让我们举一些伪代码的例子:

 v = {0,3,3, ..., n};
 // lets for simplicity say that n=3 (i.e. the number of integers I specified)
 // the loop will run from 0 to n=3 both the outer and inner loop mind you..

外部循环开始,i=0k设置为零,因为此时我们没有任何匹配。

我们使用i=1启动第二个循环(不需要检查i=0,因为我们不想检查自己的条目)。每当v[0]等于集合中的任何其他数字时,我们都会向k添加一个,因此对于我们的示例:0 != 30!=3以及{{1如果是这样的话,程序将打印k=0并继续前进。

第二次迭代0i=1。第二个循环开始检查v[i] = 3v[1],在这种情况下,两个恰好都是3,因此v[2]成为一个。并完成迭代。打印值k并继续循环..所以它会继续。

我还想提一下内循环在for循环中创建一个局部变量1,我会对它有点小心,因为可能有编译器无法正确定位它并为内循环的循环索引变量选择一个不同的名称,传统上可以使用int i=1;,但ji都可以被认为是坏名称,但这是另一个讨论

我希望它可以解决一些问题。