简单的PASCAL数组题目求解?

来源:百度知道 编辑:UC知道 时间:2024/07/07 16:39:26
下面是我不会的题目,用数组,希望带些讲解?
1.输出非博拉奇数列的前N项(5个一行)。
0 1 1 2 3 5 8 13 21 ........

2.插入一个整数在一个有序数组中(从小到大,整型数据),要求插入后仍有序。

3.删除数组中的某元素,且右边的元素都向左平移一格。

4.将一个数组中的所有元素倒序存放。
分析: A[1]——A[N] A[2]——A[n-1] ……A[I]——A[J]
I从1开始,每交换一次,I加1;直到I=N DIV 2

5.查找数组A中是否有等于NUM这个数,有则返回这个数在数组中的位置;没有,则返回0.(假设A中有N个互异的整数)。

大家能答几题就答几题了,最好附上讲解。。5题50分,不胜感激

第一题:
var
a:array[1..10000] of qword;
n,i:longint;
begin
read(n);
a[1]:=0;
a[2]:=1;
for i:=3 to n do
a[i]:=a[i-1]+a[i-2];
for i:=1 to n do
begin
write(a[i],' ');
if i mod 5=0 then writeln;
end;
end.
纠正:是斐波那契,不是非博拉奇。
因为此题前两项为1和0,从第三项开始,每一项都等于前两项之和,
所以a[i]:=a[i-1]+a[i-2]这个语句来实现,每行输5个,可以用
i mod 5=0这个语句来实现。
第二题:
var
a:array[1..10000] of longint;
n,i,k,t,j,x:longint;
begin
read(n);
for i:=1 to n do
read(a[i]);
if a[1]<a[2] then t:=1
else t:=2;
read(k);
case t of
1:begin
for i:=1 to n do
if k<a[i] then
begin
for j:=n+1 downto i+1 do
a[j]:=a[j-1];
x:=1;
a[i]:=k;
break;
end;
if x<>1 then a[n+1]:=k;
end;
2:begin
for i:=1 to