花莹雨澈 发表于 2018-3-16 11:14:18

输出斐波那契数列的最后一个数,遇到了问题

向大家求助一下,看了小甲鱼很久之前的C视频,输出斐波那契数列的前40个数,在提示下做到了,代码如下。想尝试一下只输出第40个数,结果发现全部输出时的第40个数与单独输出的第40个数是不一样的,这是为什么呢?把自己给看懵了,求大家指点一下,多谢!

#include<stdio.h>
int main()
{
        long int f1,f2;
        int i;
        f1=1;
        f2=1;
        for(i=1;i<=20;i++)
        {
                printf("%ld,%ld\n",f1,f2);
                f1=f1+f2;
                f2=f2+f1;
        }
        printf("last number:%ld\n",f2);
       
}


输出结果:

BngThea 发表于 2018-3-16 11:25:20

你最后的那个值又在循环体里面前进了两步,相当于是第42个数的值

Zmynx_2017 发表于 2018-3-16 12:44:12

你可以这样写的代码,增加一个last_num变量,就可以实现了,你可以复制代码,看一下不同
#include<stdio.h>
int main()
{
      long int f1,f2,last_num;
      int i;
      f1=1;
      f2=1;
      for(i=1;i<=20;i++)
      {
                last_num = f2;
                                printf("%ld,%ld\n",f1,f2);
                f1=f1+f2;
                f2=f2+f1;
      }
      printf("last number:%ld\n",last_num);
      
}

Dr丶温 发表于 2018-3-17 07:47:49

把printf放在两个表达式的下面你会打开新世界的大门。。。{:10_256:}

花莹雨澈 发表于 2018-3-17 14:09:58

BngThea 发表于 2018-3-16 11:25
你最后的那个值又在循环体里面前进了两步,相当于是第42个数的值

啊,明白了,非常感谢!

花莹雨澈 发表于 2018-3-17 14:10:39

Zmynx_2017 发表于 2018-3-16 12:44
你可以这样写的代码,增加一个last_num变量,就可以实现了,你可以复制代码,看一下不同

感谢修改,明白是怎么回事啦!

花莹雨澈 发表于 2018-3-17 14:14:20

Dr丶温 发表于 2018-3-17 07:47
把printf放在两个表达式的下面你会打开新世界的大门。。。

不不,直接把printf放在两个表达式的下面是有问题的~我已经明白问题出在哪里了,你也可以看看其他两位的回复{:5_109:}
页: [1]
查看完整版本: 输出斐波那契数列的最后一个数,遇到了问题