回 帖 发 新 帖 刷新版面

主题:[讨论]超简单多维数组题,分

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]有什么区别?

回复列表 (共4个回复)

沙发

longiint是什么?

板凳

longint

3 楼

算法:
(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 楼

程序:
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.

我来回复

您尚未登录,请登录后再回复。点此登录或注册