社区讨论
Pascal 90分,输出超行求破
P1553数字反转(升级版)参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @mi4ebtg6
- 此快照首次捕获于
- 2025/11/18 17:53 4 个月前
- 此快照最后确认于
- 2025/11/18 17:53 4 个月前
*其他数据点全部正确,#9与#10数据点都提示Too long on line 0(第0行过长),什么鬼?*
*以下是本人编译器的源码,源码里带了assign所以不要随便直接往洛谷上测,记得把所有“assign”和“close”什么的删掉才能用*
PASCALprogram P1553(input,output);
var
s:string;
i,j,p:longint;
flag:boolean;
begin
assign(input,'input.ini');
reset(input);
assign(output,'output.txt');
rewrite(output);
readln(s);
if (pos('/',s)=0)and(pos('%',s)=0)and(pos('.',s)=0) then//整数
begin
if (length(s)=1)and(s[1]='0') then
begin
writeln('0');
close(input);
close(output);
halt;
end
else
begin
for j:=length(s) downto 1 do
if s[j]='0' then delete(s,j,1) else break;
for i:=length(s) downto 1 do
write(s[i]);
close(input);
close(output);
halt;
end;
end;
if pos('/',s)<>0 then//分数
begin
p:=pos('/',s);
for j:=p-1 downto 1 do
if s[j]='0' then delete(s,j,1) else break;
p:=pos('/',s);
if p=1 then write('0') else for i:=p-1 downto 1 do write(s[i]);
write('/');
for j:=length(s) downto p+1 do
if s[j]='0' then delete(s,j,1) else break;
for i:=length(s) downto p+1 do
write(s[i]);
close(input);
close(output);
halt;
end;
if pos('%',s)<>0 then//百分数
begin
flag:=false;
for i:=1 to length(s) do
if (s[i]<>'0')or(s[i]<>'%') then flag:=true;
if flag then
begin
for j:=length(s)-1 downto 1 do
if s[j]='0' then delete(s,j,1) else break;
if length(s)<>1 then
begin
for i:=length(s)-1 downto 1 do
write(s[i]);
end
else
write('0');
write('%');
close(input);
close(output);
halt;
end
else
begin
write('0%');
close(input);
close(output);
halt;
end;
end;
if pos('.',s)<>0 then//小数
begin
p:=pos('.',s);
for j:=p-1 downto 1 do
if s[j]='0' then delete(s,j,1) else break;
p:=pos('.',s);
if p=1 then write('0');
for i:=p-1 downto 1 do
write(s[i]);
write('.');
if (s[p+1]='0')and(p+2>length(s))then begin write('0');close(input);close(output);halt;end
else
begin
j:=p+1;
if (s[j]='0')and(s[j+1]<>'0') then delete(s,j,1) else
begin
for j:=p+1 to length(s) do
if s[j]='0' then delete(s,j,1) else break;
end;
for i:=length(s) downto p+1 do
write(s[i]);
close(input);
close(output);
halt;
end;
end;
end.
回复
共 4 条回复,欢迎继续交流。
正在加载回复...