作业帮 > 综合 > 作业

关于一道pascal题目

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/07 11:12:05
关于一道pascal题目
读入一个字串,删去字串中相同的字符.这道题如下编写为什么不对?
program qp1765;
var
s:string;
i,j,n:integer;
begin
readln(s);
n:=length(s);
for i:=1 to n do
for j:=i+1 to n do
if copy(s,i,1)=copy(s,j,1) then delete(s,j,1);
writeln(s);
end.
错误原因:你把第j位置上的直接删除,这时,第j+1位置上的字符就随之移到第j位上了,而你没有对这个字符进行检查,直接进入了下一个字符,因此存在漏网之鱼.由于j为循环变量,不方便在循环体中更改,所以我帮你这样改了一下,测试通过:
program qp1765;
var
s:string;
i,j,n:integer;
begin
readln(s);
n:=length(s);
for i:=1 to n do
begin
j:=i+1;
while j