回 帖 发 新 帖 刷新版面

主题:初学者求解一道阅读程序题,帮忙分析一下

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个回复)

沙发

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区终于又有人了......

板凳

谢谢,输出是mo 吧!

3 楼

我也是初学者,请高手指教.如果逐步推算,可以算出最后J=2,所以运算的结果为mo.

4 楼

啊, 很不好意思, 没看见j:=j-1, very sorry.

5 楼

这种题目完全是不用思考,死做就可以

我来回复

您尚未登录,请登录后再回复。点此登录或注册