焦糖橙子 发表于 2018-1-31 13:36:11

关于数组求Fibonacci的问题

本帖最后由 焦糖橙子 于 2018-1-31 13:46 编辑

#include<stdio.h>
void main()
{
        int a={1,1};
        int n;
        for(n=3;n<20;n++)
        {
                a=a+a;
                printf("a%d=a%d+a%d=%d\n",n,n-1,n-2,a);
        }
}

如何把前两个公式打印出来?

BngThea 发表于 2018-1-31 13:43:21

直接手动输入

boot 发表于 2018-1-31 13:47:20

你的数组越界了。
int a={1,1};表示定义了一个有20个整型元素的数组a,前两项赋初值为1。
首元素是a(不是a),最后一个元素是a(不是a)。你循环中的n能取到20,实际没有a,于是越界报错了。
C语言编译器对于越界并不会检测出来,也就是compile后没问题,有点坑,所以以后要小心越界问题。
加油( _)

焦糖橙子 发表于 2018-1-31 13:48:14

BngThea 发表于 2018-1-31 13:43
直接手动输入

输出的结果如图,就是不知道哪里不对

焦糖橙子 发表于 2018-1-31 13:49:49

boot 发表于 2018-1-31 13:47
你的数组越界了。
int a={1,1};表示定义了一个有20个整型元素的数组a,前两项赋初值为1。
首元素 ...

{:10_266:}发现了,改好之后就变成图片中的样子了,这个程序还有什么地方不对吗?

549444387@qq.co 发表于 2018-1-31 13:50:32

#include<stdio.h>
void main()
{
      int a = {1,1};
      int n;
      for(n = 2; n < 20; n++)
      {
                a = a + a;
      }
                for ( n = 0; n < 20; n++ )
                {
                        if ( n%5 == 0 )
                        {
                                printf("\n");
                        }
                        printf("a[%d] = %d\t", n+1, a);
                }
                printf("\n");
}

你的n取值错了,数组第一个数是a

boot 发表于 2018-1-31 13:54:26

焦糖橙子 发表于 2018-1-31 13:49
发现了,改好之后就变成图片中的样子了,这个程序还有什么地方不对吗?

第一个最好应该是
a=a+a;
所以循环给n赋初值2,就好啦
页: [1]
查看完整版本: 关于数组求Fibonacci的问题