0

我在下面声明了一个带有结构变量 arr[] 的结构 st,这是一个结构数组。我试图将值 1 分配给“num”变量,并将值 1 到 10 分配给数组 arr[] 的前 10 个位置的“val”变量。并且值 2 到“num”,值 1 到 10 到接下来 10 个位置的“val”。但是当我跟踪代码时,它不会将值分配给同一数组位置的相应 num 和 val 。如果我想将 num=1 和 val=4 分配给第 4 个结构,它会将 num=1 分配给第 3 个结构的 val,将 val=4 分配给第 4 个结构的 num。

我的查询与数组索引无关。

问题是:

如果我写了这些陈述

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;
}
4

2 回答 2

0

1) 数组是基于 0 的,即索引从 0 开始并上升到 arraySize - 1(来自您的声明)。
2) 浏览你的代码,看看每一行在做什么......
3) 现在想想你需要做什么:
3.1) 遍历数组
的每个元素 3.2) 每个元素访问结构
3.3) 结构内部您想将
num = 1 设置为10 个元素,将 2 设置为10 个元素(您在这里看到任何简单的数学规则吗?)
val = arrayElementIndex(这太简单了)

查看您的代码并考虑它需要如何完成。

于 2012-08-18T13:41:31.237 回答
-1

http://www.cplusplus.com/doc/tutorial/arrays/

如果你想访问命名数组中的第一个元素,arr那么你可以通过arr[0].

因此,如果您这样做可能会有所帮助:

整数 i,j,k=0;

于 2012-08-18T13:32:15.113 回答