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...