主题:初学者求解一道阅读程序题,帮忙分析一下
sj0616
[专家分:0] 发布于 2006-10-12 11:31:00
program s2;
var a,t:string;
i,j:integer;
begin
a:='morning';
j:=1;
for i:=2 to 7 do
if(a[j]<a[i]) then
j:=i;
j:=j-1;
for i:=1 to j do
write (a[i]);
end.
输出:____
回复列表 (共5个回复)
沙发
maxumi [专家分:2200] 发布于 2006-10-12 13:54:00
program s2;
var a,t:string;
i,j:integer;
begin
a:='morning';
j:=1;
for i:=2 to 7 do
if(a[j]<a[i]) then
j:=i;
j:=j-1;
for i:=1 to j do
write (a[i]);
end.
输出:____
逐步模拟:
for i:=2 to 7 do
if(a[j]<a[i]) then
j:=i;
如果i处字符大于j处字符, 则j:=i;
可以看出j正是'morning'中最大字符的位置.
'morning'中最大字符的位置是3, 所以j=3.
for i:=1 to j do
write (a[i]);
所以输出结果是mor.
PS:Pascal区终于又有人了......
板凳
sj0616 [专家分:0] 发布于 2006-10-12 17:42:00
谢谢,输出是mo 吧!
3 楼
gdczf [专家分:0] 发布于 2006-10-12 18:09:00
我也是初学者,请高手指教.如果逐步推算,可以算出最后J=2,所以运算的结果为mo.
4 楼
maxumi [专家分:2200] 发布于 2006-10-13 07:30:00
啊, 很不好意思, 没看见j:=j-1, very sorry.
5 楼
QQ331373582 [专家分:1500] 发布于 2006-10-19 20:45:00
这种题目完全是不用思考,死做就可以
我来回复