C++ C+中的结构数组+;:为数组中的每个结构赋值
我在下面声明了一个结构st,其中包含一个结构变量arr[],一个结构数组。 我试图将值1赋给'num'变量,将值1到10赋给数组arr[]前10个位置的'val'变量。接下来10个位置的值2到'num',值1到10到'val'。但是当我跟踪代码时,它不会为同一数组位置的相应num和val赋值。如果我想将num=1和val=4分配给第四个结构,它会将num=1分配给第三个结构的val,将val=4分配给第四个结构的numC++ C+中的结构数组+;:为数组中的每个结构赋值,c++,arrays,struct,C++,Arrays,Struct,我在下面声明了一个结构st,其中包含一个结构变量arr[],一个结构数组。 我试图将值1赋给'num'变量,将值1到10赋给数组arr[]前10个位置的'val'变量。接下来10个位置的值2到'num',值1到10到'val'。但是当我跟踪代码时,它不会为同一数组位置的相应num和val赋值。如果我想将num=1和val=4分配给第四个结构,它会将num=1分配给第三个结构的val,将val=4分配给第四个结构的num 我的问题不是关于数组索引 问题是: 如果是我写的话 arr[2].num=1
我的问题不是关于数组索引 问题是: 如果是我写的话 arr[2].num=1; arr[2].val=2 ({num,val}) 预期结果是:arr[2]={1,2} 但实际结果是: arr[1]={num,1} arr[2]={2,val}
#include<iostream.h>
#include<conio.h>
class abc
{
public:
struct st
{
int num;
int val;
};
st arr[21];
void funct();
};
void abc::funct()
{
int i,j,k=1;
for(i=1;i<=2;i++)
{
for(j=1;j<=10;j++)
{
arr[k].num=i;
arr[k].val=j;
k++;
}
}
}
int main()
{
abc z;
z.funct();
return 0;
}
#包括
#包括
abc班
{
公众:
结构街
{
int-num;
int-val;
};
st-arr[21];
void funct();
};
void abc::funct()
{
int i,j,k=1;
对于(i=1;i
如果要访问数组中名为arr
的第一个元素,请通过arr[0]
进行访问
因此,如果您这样做可能会有所帮助:
int i,j,k=0
1) 数组是基于0的,即索引从0开始,直到arraySize-1(从您的声明中)。
2) 浏览您的代码并查看每一行正在做什么…
3) 现在想想你需要做什么:
3.1)迭代数组的每个元素
3.2)对于每个元素,访问结构
3.3)要设置的结构内部
num=1到第一个10个元素,2到第二个10个元素(您在这里看到任何简单的数学规则吗?
val=arrayElementIndex(这太简单了)
看看你的代码,想想需要怎么做。海报明确说明他们想要分配位置1-20。为什么他们跳过0,我不知道。1)执行k=1将值分配给arr[0]。k=2分配给arr[1],依此类推,但仍然将“val”分配给arr[k]的num这是这样的:如果我想给每个结构分配以下{num,val}值:k=1,arr[0]={1,1 arr[1]={1,2}arr[2]={1,3}arr[3]={1,3}arr[3]={1,4},它实际上分配了以下值:arr[0]={1,1}arr[1]={2,1}arr[2]={3,1}arr[3]={4},val[1}'th结构和第0结构的'val'到'num'。我不明白这是怎么发生的。我的查询不是关于数组索引的。问题是:如果我写了语句arr[2]。num=1;arr[2]。val=2;预期结果是:arr[2]={1,2}({num,val}),但实际结果是:arr[1]={num,1}arr[2]={2,val}1)执行k=1将值分配给arr[0].k=2到arr[1],依此类推,但它仍然将'val'分配给arr[k]的num,并将'num'分配给上一个结构。这种情况正在发生:如果我想给每个结构分配以下{num,val}值:如果k=1,arr[0]={1,1arr[1]={1,2}arr[2]={1,3}arr[3]={1,4},它实际上分配了以下值:arr[0]={1,1}{1,1}{1}2}arr[3]={4,1}2)在arr[0],'num'被分配给第(-1)个结构的'val','val'被分配给第0个结构的'num'。我不明白这是怎么发生的。希望您理解了我的查询。我的查询不是关于数组索引的。问题是:如果我编写了语句arr[2].num=1;arr[2].val=2;({num,val}),预期结果是:arr[2]={1,2}但是实际的结果是:arr[1]={num,1}arr[2]={2,val}@user1460936我只是按它应该的样子运行代码(正如我建议您更改的那样),并且它工作正常。它确实有arr[I].num=?;arr[I]的赋值.val=i;
并生成正确的结果。请重新编写您的代码并发布更正后的版本。然后我们将能够看到您做错了什么。我编写的代码对于我要执行的任务是正确的,即:arr[k]。num=i;arr[k].val=j;但它显示的输出不正确。请运行我编写的代码。我编辑了我的问题,并显示了实际输出和我想要的内容。@Germann我想做的作业非常简单。我真的很惊讶为什么它不会做适当的作业。