C用数学函数初始化三维数组?

时间:2014-08-20 21:48:52

标签: c arrays

我正在看过去一年的计算机科学课程考试,我对一个问题感到困惑。我不知道它在问什么。我不是要求某人为我做这件事,但如果有人能帮我理解这个问题我想要做什么,我将不胜感激。

根据下面的规范编写一个完整的C程序来分配,初始化,打印和解除分配int类型变量的三维数组。三个数组维x,y和z的大小分别为3,2和4。

应根据以下函数

初始化数组元素

f(x,y,z)= 5x + 6y + 7z

这意味着您的初始化代码如下所示:

myArray [x] [y] [z] = 5 * x + 6 * y + 7 * z;

以下是一些示例输出:

0 7 14 21
6 13 20 27

5 12 19 26
11 18 25 32

10 17 24 31
16 23 30 37

首先,我不明白问题是什么。我看到的唯一模式是每个值都是先前值+7。

编辑:Facepalm。谢谢安迪。我认为这完全不同。

2 个答案:

答案 0 :(得分:2)

作业中没有任何问题。有以下要求

  

编写一个完整的C程序来分配,初始化,打印和   根据,取消分配int类型变量的三维数组   符合以下规格

本声明中不清楚的是什么?

并且有一个例子如何初始化数组的每个元素

myArray[x][y][z] = 5 * x + 6 * y + 7 * z;

因此,您需要为每个数组维度为每个循环编写三个嵌套循环。

例如

for ( int x = 0; x < 3; x++ )
{
   for ( int y = 0; y < 2; y++ )
   {
      for ( int z = 0; z < 4; z++ )
      {
         myArray[x][y][z] = 5 * x + 6 * y + 7 * z;
      }
   }
}

答案 1 :(得分:1)

他们希望您分配,填写和取消分配3D数组,因此您可能需要

  1. 使用malloc()分配您的3D数组:
    • 首先创建一个长度为3的1维数组。
    • 该数组的每个元素都应该包含一个指向另一个长度为2的数组的指针(因此将有3个长度为2的数组)
    • 最后,这个2元素数组的每个元素都应该包含一个指向4个元素数组的指针(因此将有3 * 2个长度为4的数组)
  2. 使用3个嵌套循环用数组填充数组myArray [x] [y] [z] = 5 * x + 6 * y + 7 * z;
  3. 使用free()释放数组。