主题:[讨论]超简单多维数组题,分
编程小菜菜
[专家分:90] 发布于 2007-07-31 19:23:00
1.对于一个给定二维数组,编程按其行优先的顺序,转化为对应的一维数组.
2.对于数组arr[1..10,1..10] of longint ,若arr[1,1]的首地址为120,写出求元素
a[x,y]首字节地址的计算机公式,并求a[10,1],a[9,8]在内存中的存储地址.
3.const max=13 var a:array[1..max];
与 a:array[1..13]有什么区别?
最后更新于:2007-07-31 21:09:00
回复列表 (共4个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-31 20:07:00
longiint是什么?
板凳
编程小菜菜 [专家分:90] 发布于 2007-07-31 20:56:00
longint
3 楼
Matodied [专家分:7560] 发布于 2007-07-31 21:27:00
算法:
(1)二维转一维的公式:b[i, j] := a[(i - 1) * n + j],其中n是b数组第2维的上界。
(2)由于一个longint元素占4个字节,因此公式如下:
arr[i, j]的地址 = {[(i - 1) * 10 + j] - 1} * 4 + 120。
(3)没有区别。
4 楼
Matodied [专家分:7560] 发布于 2007-07-31 21:36:00
程序:
1、
TYPE
arr1 = ARRAY[1..31, 1..31] OF INTEGER;
arr2 = ARRAY[1..961] OF INTEGER;
VAR
b: arr1; a: arr2;
m, n, i, j: INTEGER;
BEGIN
READLN(m, n);
FOR i:=1 TO m DO BEGIN
FOR j:=1 TO n DO BEGIN
READ(b[i, j]);
END;
END;
FOR i:=1 TO m DO BEGIN
FOR j:=1 TO n DO BEGIN
a[(i - 1) * n + j] := b[i, j];
END;
END;
FOR i:=1 TO m * n DO WRITE(a[i], ' ');
END.
我来回复