杭电2047:请问这里为什么总显示wrong answer

#include<stdio.h>
void main()
{
    int n,i;
    double a[40];
    a[0]=3;
    a[1]=8;
    for(i=2;i<40;i++)
        a[i]=2*a[i-1]+2*a[i-2];
    while(scanf("%d",&n)!=EOF)
        printf("%.0lf\n",a[n-1]);
}

printf("%d\n",a[n-1]);

 

代码编译没问题,但是你输入的n要大于等于1

#include<stdio.h>
void main()
{
    int n,i;
    double a[41];
    a[1]=3;
    a[2]=8;
    for(i=3;i<41;i++)
        a[i]=2*a[i-1]+2*a[i-2];
    while(scanf("%d",&n)!=EOF)
        printf("%.0lf\n",a[n]);
}

这样还是不对呀

#include<stdio.h>
void main()
{
    int n,i;
    double a[40];
    a[0]=3;
    a[1]=8;
    for(i=2;i<40;i++)
        a[i]=2*a[i-1]+2*a[i-2];

    scanf("%d",&n);
    while(EOF!=n)

    {
        printf("%.0lf\n",a[n-1]);

        scanf("%d",&n);

    }
}