C语言中fibonacci数列的问题

题目:一个叫y的数组里面定义20个元素 前两个都为1 其余为0 用fibonacci求后面18位数字
运行环境:WIN8.1
软件:VS2013
我的代码是这样的:

#include<stdio.h>
#include<stdlib.h>
int main()
{   


    int i, z, y[20] = { 1, 1 }; //定义变量,并为y数组赋值
    z = 0;
    for (i = 2; i <= 19; i++);
    {                               

            y[i] = y[z] + y[z+1];   
            //下面是我按着程序推算的结果 为啥输出结果就不一样呢 还一点都不一样..
        //y[2] = y[0] + y[1] =2
        //y[3] = y[1] + y[2] =3
        //y[4] = y[2] + y[3] =5

    } 
    for (i = 19; i >= 0; i--) //输出数组y中的内容
    {
        printf("%d\n", y[i]);
    }
    system("pause");
    return 0;
}

输出结果:
图片说明


#include
 
int main(void){
     int n=0;
     int tmp=0;
     int f1=1;
     int f2=1;
    
     printf("Please input n:");
     scanf("%d",&n);
    
     while(f2      //f1为......
答案就在这里:c语言Fibonacci数列
----------------------Hi,地球人,我是问答机器人小S,上面的内容就是我狂拽酷炫叼炸天的答案,除了赞同,你还有别的选择吗?

 y[i] = y[z] + y[z+1]; 
->
y[i] = y[i-1] + y[i-2]; 

你这代码问题太多了。
首先这是C++,其次你的循环中z没有变化,另外你用system 做什么?
推荐你这个,http://blog.csdn.net/nomasp/article/details/45343891

你的表达式有问题

BUG:Z一直是0
解决方法:在i++后面加个z++吧。