回 帖 发 新 帖 刷新版面

主题:[讨论]帮忙改错!!!

牛的"非拨拉机"数列:
输入前两个数,得出后面的前500个数,把它们连起来,中间没有空格.
如:输入1 1 数列为1123581321……,求第K位数列中的数字.

这是我编的,是把它们全求出来,放在一个数组里,每位放一个数字,然后输出,可是有错误,请大家帮我查查错,谢谢!!!
var
   a,b,c,r,i,j,z,k,q:longint;
   s,s1,s2:string;
   x:array[1..500] of longint;
begin
     read(a,b,k);'A,B为输入的首两位,K为要输出的第K位
     q:=0;'一个数字放在数组中的第Q位
     str(a,s);'S是要求A的位数方便的字符串变量,与S1,S2意义相同
     j:=a;'为使A的值计算后不变,用的一个代替变量
     r:=length(s);
     r:=r+1;'是求数组中位数与P相减(算出来的,可能错)的变量
     repeat
           q:=q+1;
           x[r-q]:=j mod 10;     '取数的每一位,但因第一个取的是个位,所以要用
                                  R和P来计算每一次取的数在数组中的第几位(就
                                  是这里有可能有错)
           j:=j div 10;
     until (j=0);
     z:=b;
     str(b,s1);
     r:=length(s1);
     r:=r+1;
     repeat
           q:=q+1;
           x[r-q]:=z mod 10;
           z:=z div 10;
     until (z=0);
     for i:=3 to 500 do
     begin
          c:=a+b;
          j:=c;
          str(c,s2);                         '计算后面的数,并按上面的方法放置
          r:=length(s2);
          r:=r+1;
          repeat
                q:=q+1;
                x[r-q]:=j mod 10;
                j:=j div 10;
          until (j=0);
          b:=a;
          c:=b;
     end;
     writeln(x[k]);                     '输出第K位
end.
[em18]

回复列表 (共17个回复)

沙发


怎么没有人帮忙,加+++++++++++++30呀!!!
[em4]

板凳


求求大家行行好吧!!!

3 楼


跪求行了吧!不会的也来顶一下嘛!!!

4 楼

请对你定义的变量作些说明,是何用途

5 楼

其实无须数组,只用3个数值型变量,a,b,c;a,b存前两个数值,加起来存到C,再把B,C赋到A,B。具体的我再试编一下,你的我也会好好看一下。

6 楼

program ex;
var
        i,j,k:integer;
        a,b,c:integer;
begin
        write('Enter k:');
        readln(k);
        i:=0;a:=1;b:=0;
        if k<1 then write('Data error!')
               else begin
                        while i<k do
                                begin
                                    inc(i);
                                    c:=a+b;
                                    a:=b;b:=c;
                                end;
                        write('No.',k,' is ',c);
                     end;
        readln
end.
这个程序测试通过

7 楼

哦,对不起,看错了,我把第1、2位看成一定是1,1了,不过要改也很容易
别忘了给我加分

8 楼

嗨,题意理解错了,千万别失望,我一定给你答复

9 楼


谢谢

10 楼


愿你和我一起进步

我来回复

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