| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖
标题:求大神指教三维数组的问题,地址
只看楼主 加入收藏
dd460215204
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-10
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:6 
求大神指教三维数组的问题,地址
一个三维数组a[9][8][7],初始地址是78,每个元素占四个存储单元,求a[4][7][5]分别按列序和行序的地址?详细点解题过程,不仅仅只要答案!
2013-06-07 21:43
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:1 
你可以看下数据结构中的数组的行序和列序是怎么个情况,然后你就懂了

Maybe
2013-06-07 22:22
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
不知道楼主说的“列序”和“行序”可是我们说的“列主序”和“行主序”的意思么?

楼主的意思是,C和Fortran在数组存储上的那种区别吗?

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-08 00:37
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
三维数组a[9][8][7]是一个9页8行7列的三维数组

#include<stdio.h>
int main()
{
    int i,j,k;
    int data=1;
    int a[9][8][7];
    for(i=0;i<9;i++)
    {
        for(j=0;j<8;j++)
        {
            for(k=0;k<7;k++)
            {
                a[i][j][k]=data++;
            }

        }

    }

    for(i=0;i<9;i++)
    {
        for(j=0;j<8;j++)
        {
            for(k=0;k<7;k++)
            {
                printf("%5d",a[i][j][k]);
            }
            printf("\n");
        }
        printf("\n\n");
    }

    printf("%d\n\n\n\n",a[4][7][5]-a[0][0][0]);
}


这个代码算出了a[4][7][5]和a[0][0][0]之间隔的数据个数。剩下的计算楼主应该懂的


然后说列主序的情况
我用matlab写了一下代码
大概是这样的
>> for i=1:9
for j=1:8
for k=1:7
a(i,j,k)=b;
b=b+1;
end
end
end
>> a

a(:,:,1) =

     1     8    15    22    29    36    43    50
    57    64    71    78    85    92    99   106
   113   120   127   134   141   148   155   162
   169   176   183   190   197   204   211   218
   225   232   239   246   253   260   267   274
   281   288   295   302   309   316   323   330
   337   344   351   358   365   372   379   386
   393   400   407   414   421   428   435   442
   449   456   463   470   477   484   491   498


a(:,:,2) =

     2     9    16    23    30    37    44    51
    58    65    72    79    86    93   100   107
   114   121   128   135   142   149   156   163
   170   177   184   191   198   205   212   219
   226   233   240   247   254   261   268   275
   282   289   296   303   310   317   324   331
   338   345   352   359   366   373   380   387
   394   401   408   415   422   429   436   443
   450   457   464   471   478   485   492   499


a(:,:,3) =

     3    10    17    24    31    38    45    52
    59    66    73    80    87    94   101   108
   115   122   129   136   143   150   157   164
   171   178   185   192   199   206   213   220
   227   234   241   248   255   262   269   276
   283   290   297   304   311   318   325   332
   339   346   353   360   367   374   381   388
   395   402   409   416   423   430   437   444
   451   458   465   472   479   486   493   500


a(:,:,4) =

     4    11    18    25    32    39    46    53
    60    67    74    81    88    95   102   109
   116   123   130   137   144   151   158   165
   172   179   186   193   200   207   214   221
   228   235   242   249   256   263   270   277
   284   291   298   305   312   319   326   333
   340   347   354   361   368   375   382   389
   396   403   410   417   424   431   438   445
   452   459   466   473   480   487   494   501


a(:,:,5) =

     5    12    19    26    33    40    47    54
    61    68    75    82    89    96   103   110
   117   124   131   138   145   152   159   166
   173   180   187   194   201   208   215   222
   229   236   243   250   257   264   271   278
   285   292   299   306   313   320   327   334
   341   348   355   362   369   376   383   390
   397   404   411   418   425   432   439   446
   453   460   467   474   481   488   495   502


a(:,:,6) =

     6    13    20    27    34    41    48    55
    62    69    76    83    90    97   104   111
   118   125   132   139   146   153   160   167
   174   181   188   195   202   209   216   223
   230   237   244   251   258   265   272   279
   286   293   300   307   314   321   328   335
   342   349   356   363   370   377   384   391
   398   405   412   419   426   433   440   447
   454   461   468   475   482   489   496   503


a(:,:,7) =

     7    14    21    28    35    42    49    56
    63    70    77    84    91    98   105   112
   119   126   133   140   147   154   161   168
   175   182   189   196   203   210   217   224
   231   238   245   252   259   266   273   280
   287   294   301   308   315   322   329   336
   343   350   357   364   371   378   385   392
   399   406   413   420   427   434   441   448
   455   462   469   476   483   490   497   504

>> a(4,7,5)-a(1,1,1)

ans =

   214

>>


 然后,,知道了两个位置之间有几个数据之后,我想剩下的计算楼主应该会了吧




学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-08 01:14
蚕头燕尾
Rank: 10Rank: 10Rank: 10
来 自:Gryffindo
等 级:贵宾
威 望:12
帖 子:734
专家分:1546
注 册:2013-3-24
收藏
得分:0 
奥,忘了说明一下,matlab和fortran都是列主序的语言,我这里用了相对比较熟悉的matlab实现,原理跟fortran是一致的

这一点请楼主不用怀疑

学习编程,为的是表达自己的思想,而不是被别人的思想所禁锢。要先明白自己想干嘛,而不要先问别人让你干嘛。               

                                                                                                                    Black Cat      Hello Tomorrow~
2013-06-08 01:17
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:0 
学习了

C++菜鸟
2013-06-08 08:37
dd460215204
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2013-4-10
收藏
得分:0 
回复 4楼 蚕头燕尾
有点懂了
2013-06-08 09:53
快速回复:求大神指教三维数组的问题,地址
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026608 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved