pascal程序 输入单词按字母表顺序排序输出
输入【随意】个单词,以end结尾,把输入的单词按照字典(字母表)顺序排列后输出,要求输入一个单词换一行继续输入,直到最后一行以end结束,用一维数组解例:输入banana...
输入【随意】个单词,以end结尾,把输入的单词按照字典(字母表)顺序排列后输出,要求输入一个单词换一行继续输入,直到最后一行以end结束,用一维数组解
例:
输入
banana
pear
apple
end
运行后输出
apple
banana
pear
无需判断单词是否拼写正确
请高手给我改改这个,不知错在哪里 展开
例:
输入
banana
pear
apple
end
运行后输出
apple
banana
pear
无需判断单词是否拼写正确
请高手给我改改这个,不知错在哪里 展开
2个回答
展开全部
var
a:array[1..1000] of string;
i,j,n,b:integer;
k:string;
begin
n:=1;
readln(a[n]);
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]);
end;
dec(n);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
k:=a[i]; a[i]:=a[j]; a[j]:=k;
end;
for i:=1 to n do
writeln(a[i]);
end.
问题补充回答如下:
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]); //你的程序错在这里,你用的是read,是不行的,因为你现在要读入字符串
end;
a:array[1..1000] of string;
i,j,n,b:integer;
k:string;
begin
n:=1;
readln(a[n]);
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]);
end;
dec(n);
for i:=1 to n-1 do
for j:=i+1 to n do
if a[i]>a[j] then
begin
k:=a[i]; a[i]:=a[j]; a[j]:=k;
end;
for i:=1 to n do
writeln(a[i]);
end.
问题补充回答如下:
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]); //你的程序错在这里,你用的是read,是不行的,因为你现在要读入字符串
end;
展开全部
var
a:array[1..1000] of string;
i,j,n,b:integer;
k:string;
procedure swap(var a,b:string);
var t:string;
begin
t:=a;
a:=b;
b:=t;
end;
procedure pai(l,r:longint);
var m:string; i,j:longint;
begin
i:=l; j:=r;
m:=a[(l+r) div 2];
repeat
while a[i]<m do inc(i);
while a[j]>m do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then pai(l,j);
if i<r then pai(i,r);
end;
begin
n:=1;
readln(a[n]);
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]);
end;
dec(n);
pai(1,n);
for i:=1 to n do
writeln(a[i]);
end.
a:array[1..1000] of string;
i,j,n,b:integer;
k:string;
procedure swap(var a,b:string);
var t:string;
begin
t:=a;
a:=b;
b:=t;
end;
procedure pai(l,r:longint);
var m:string; i,j:longint;
begin
i:=l; j:=r;
m:=a[(l+r) div 2];
repeat
while a[i]<m do inc(i);
while a[j]>m do dec(j);
if i<=j then
begin
swap(a[i],a[j]);
inc(i);
dec(j);
end;
until i>j;
if l<j then pai(l,j);
if i<r then pai(i,r);
end;
begin
n:=1;
readln(a[n]);
while a[n]<>'end' do
begin
n:=n+1;
readln(a[n]);
end;
dec(n);
pai(1,n);
for i:=1 to n do
writeln(a[i]);
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询