關於pascal中陣列的記憶體申請問題 跪求 得好,分不是問題!!時再議

2025-01-25 16:45:10 字數 4861 閱讀 7062

1樓:sky之痕

longint 佔4位元組。

integer 佔2位元組。

另外,自己看對照表。

方法:一唯陣列 array[1..n] of longint;

s:=n*4/1024/1024

s 就是mb下的記憶體大小。

一唯陣列 array[1..n,1..n] of longint;

s:=n*n*4/1024/1024

同理。三唯 ,四維類似。

2樓:網友

額……你完全可以無限制的使用。

這樣吧,256mb的記憶體給你用,不懂你為什麼會有記憶體不夠,我編魔塔什麼的似乎都沒有出現過這種問題……

不過電腦上的確有時會這樣……你除錯的時候跳到1000左右就足夠了,交上去的時候再搞大點,畢竟,測試用的電腦比程式設計用的電腦強悍很多很多的。

3樓:網友

free pascal中longint來個兩億左右應該也不是個問題~

我估計考題中不會超出,除非你方法錯了。

至於fillchar應該不會超時吧。

4樓:常年感到壓力

自己估算卅 byte一位元組 longint4位元組 陣列下標和型別的積就是空間大小了阿。

將a陣列裡的數逆向輸出,只能用乙個臨時的儲存單元,不能另開闢新陣列。(pascal)

5樓:網友

var a:array[1..10000]of longint; //longint資料範圍大一些 速度快 一般用這個。

n,i:longint; //n為數字個數 i為迴圈變數。

beginreadln(n); //讀入個數。

for i:=1 to n do read(a[i]);//把數字都讀入。

for i:=n downto 1 do write(a[i],' '); //從第n個開始一直到第1個依次輸出 就達到逆向輸出的目的。

var a:array[1..10000]of longint; //longint資料範圍大一些 速度快 一般用這個。

n,i,x:longint; //n為數字個數 i為迴圈變數。

beginreadln(n); //讀入個數。

for i:=1 to n do read(a[i]);//把數字都讀入。

for i:=1 to n div 2 do begin x:=a[i];a[i]:=a[n-i+1];a[n-i+1]:=x;end; //交換過程,兩兩交換。

for i:=1 to n do write(a[i],' '); //從前往後輸出。

end;

6樓:07二班高階菜鳥

你的意思是不是不能開陣列,讀入一組數反向輸出?試試這個:

procedure fun;

var n:longint;

beginread(n);

if not eof then fun;

write(n,' ');

end;begin

fun; writeln;

end.讀入格式:直接輸入陣列a即可,最後按下ctrl+z(追加乙個^z,檔案結束標誌),回車,例如:

2 5 7 4 1^z回車。

如果不想加^z,就把**中的eof改為eoln。

pascal中關於陣列問題,急!!!

7樓:網友

下列**可以完成第一題:

var l:longint;

a,b,c:integer;

beginreadln(a);

l:=a*a*a;

b:=1;write(l,'=');

while l>0 do begin

l:=l-b;

if (l-b)mod b<>0 then beginwrite(b,'+');

b:=b+2;

endelse writeln(b);

end;end;

end.

8樓:網友

出檔名為,第一行是p點座標x與y,第二行是最小的d值。輸入與輸出資料中一行相鄰兩個數之間用空格區分。

pascal陣列問題

9樓:帳號已登出

提供2種方案。

1.如果陣列無序,則直接查詢。

function find(num:integer):integer;

vari:integer;

beginfor i:=1 to n do

if a[i]=num then exit(i);

exit(0);

end.這種方法在最壞情況下時間複雜度o(n),若渣李要多次查詢,效率較低。

2.如陣列有序,或者你族拍給它排序(假定從小到大),那麼二分查詢。

function bifind(num:integer):integer;

varl,r,mid:integer;

beginl:=1; r:=n;

while (l<=r) do

beginmid:= l+r) shr 1; /或者你寫 mid:=(l+r) div 2;

if (a[mid]==num) exit(mid) else

if (a[mid]r:=mid-1;

end;exit(0);

end.這種方法效率高,前提是陣列有如穗遲序。(若多次查詢推薦這種方法。)

關於pascal的陣列定義

10樓:晨之子

不能這樣定義。

陣列的大小必須在宣告的時候是乙個明確的常量,也就是說,你宣告乙個陣列的時候,不能用變數來說明陣列的大小。

這個程式,你要麼讓m是個const,要麼定義乙個const maxm表示m可能的最大取值,然後定義a:array[1..maxm] of 0..1;

11樓:網友

不對。給你講講:

一維陣列。1、定義:

vara:array [1..10] of integer;

其中:a是這一批資料的名稱,稱為陣列名;array、of是定義陣列的保留字;中括號中的數字是資料編號的下限和上限,財時也說明了資料的個數(上限-下限);最後乙個是資料的基型別,如integer,char,real,boolean。

2、陣列元素的輸入:

陣列名代表的並不是乙個變數,而是一批變數,因而,不能直接整個陣列讀入,而是要逐個陣列元素讀入,通常用迴圈結構來完成這一功能。下面是幾個常用輸入陣列元素的例子:

for i:=1 to 10 do read(a[i]);

for i:=1 to 10 do a[i]:=i;

for i:=1 to 10 do a[i]:=0;

for i:=1 to 10 do a[i]:=random(100);

3、陣列元素的輸出:

和陣列元素的輸入相同,陣列元素的輸出也不能由乙個write語句直接完成。同樣要逐個陣列元素輸出。通常也用迴圈結構來完成這一功能:

for i:=1 to 10 do write(a[i],' ');

writeln;

4、陣列的應用:

例1:從鍵盤輸入10個數,將這10個數逆序輸入,並求這10個數的和,輸出這個和。

program p1;

vara:array [1..10] of integer;

i,s:integer;

beginfor i:=1 to 10 do read(a[i]);

for i:=10 downto 1 do write(a[i],' ');

writeln;

s:=0;for i:=1 to 10 do s:=s+a[i];

writeln('s=',s);

end.

12樓:光速兔子終極版

陣列中的範圍不能使用變數。

如a:array[1..100] of 0..1;

13樓:網友

在定義陣列的時候下標數字是限定於陣列的數量的,不可以用m

14樓:網友

不正確變數m不能作為陣列下標。

pascal中1g記憶體陣列可以開多大?

15樓:網友

乙個 longint (32位有符號整型)變數佔4個位元組。

理論上如果 1g 記憶體全部拿來開陣列的話可以開到 268435456 (2^28)那麼長。(fpc ,xp sp3 下編譯通過,執行無錯誤)

但實際上不應該開那麼大,因為要考慮其他程式的執行空間。

16樓:網友

10^8,不能再大了,而且一般的題庫、考試,都是有記憶體限制的,一般不允許超過128m

pascal語言中,陣列要用a[i].1,怎麼定義?

17樓:網友

首先a[i].1 是不對的。

如果使a[i].任何字串到還可以。

這種陣列叫做記錄陣列,定義如下:

type df=record

a:integer;

b:char;

end;var s:array[1..10] of df;

df成為記錄型別,a、b稱為df這個記錄的域,integer和char分別為a、b兩個域的型別;

記錄陣列定義如下:

type 《記錄型別識別符號》=record《網域名稱1>:《型別1>;

網域名稱2>:《型別2>;

網域名稱n>:《型別n>;

end;var 《陣列型別識別符號》:[1..n] of 記錄型別識別符號;

c中如何給函式傳遞陣列引數,c中關於陣列作為函式引數的幾種方法

對於陣列 名作為參bai 數傳遞,有兩種du方式 1.使用zhi陣列名本身,如以下dao 程式求陣列專a的最大值屬 include int max int x,int n 作為陣列定義形式int main void int m m max a,5 陣列名用為實參printf a的最大值 d n m ...

C,C 中關於char以及char陣列的問題

1.因為 iostream內部 cin cout 對char 做了特殊處理.因為c c 輸入輸出字串通常要用到char 如果直接輸出地址,就要用別的方法來輸出字串了 就不方便了.所以直接輸出地址 那裡放著的字串.3 sizeof hello 得到 字串實際長度 0 佔的一個位元組 一般用strlen...

VB陣列問題,Vb中的陣列是什麼意思?

編譯通過。直接粘進去可驗證。最大值最小值的個數可以用兩個整數標示,等你找玩最大和最小了再迴圈比較一次,有和最大相同的就最大值個數加一,最小值同理。dim max min i t maxh minh b as integer private sub form click randomize for i...