关于一道pascal题目读入一个字串,删去字串中相同的字符.这道题如下编写为什么不对?program qp1765;vars:string;i,j,n:integer;beginreadln(s);n:=length(s);for i:=1 to n dofor j:=i+1 to n doif copy(s,i,1)=copy(s,j,1) then dele
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/28 20:00:40
关于一道pascal题目读入一个字串,删去字串中相同的字符.这道题如下编写为什么不对?program qp1765;vars:string;i,j,n:integer;beginreadln(s);n:=length(s);for i:=1 to n dofor j:=i+1 to n doif copy(s,i,1)=copy(s,j,1) then dele
关于一道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.
关于一道pascal题目读入一个字串,删去字串中相同的字符.这道题如下编写为什么不对?program qp1765;vars:string;i,j,n:integer;beginreadln(s);n:=length(s);for i:=1 to n dofor j:=i+1 to n doif copy(s,i,1)=copy(s,j,1) then dele
错误原因:你把第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