Turbo Pascal中数组排序问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 14:00:29
const n=10;
var a:array[1..n] of integer;
i:integer;
temp:integer;
begin
for i:=1 to n do read(a[i]);
temp:=a[n];
for i:=2 to n do a[i]:=a[i-1];
a[1]:=temp;
for i:=1 to n do write(a[i])
end.

要求将数组的最后一个元素送到第一个位置.哪里错了?

确实错了,你这样的程序运行以后,全部都是a[1]的内容,因为for i:=2 to n do a[i]:=a[i-1]; 这个语句不正确,这个语句相当于依次执行:
a[2]:=a[1];
a[3]:=a[2];
a[4]:=a[3];
......
所以执行后,这些内容全部都是a[1]的内容,程序应该修改为:

const n=10;
var a:array[1..n] of integer;
i:integer;
temp:integer;
begin
for i:=1 to n do read(a[i]);
temp:=a[n];
for i:=n downto 2 do a[i]:=a[i-1];
a[1]:=temp;
for i:=1 to n do write(a[i],' ')
end.

以上程序修改后在TURBO PASCAL 7下正确执行,但是只是把位置循环移动,本程序绝对没有升序、降序排列的功能。