想要代码解析,实在小白看不懂,(结尾)?

#include

int main()
{
int t,digit;
long long arr[50];
arr[1]=2;
arr[2]=3;
for(int i=3; i<50; i++)
arr[i]=arr[i-1]+arr[i-2];
scanf("%d",&t); //输入指令
for(int i=1; i<=t; i++)
{
scanf("%d",&digit);
printf("Scenario #%d:\n%lld\n\n",i,arr[digit]);
}
return 0;
}

//首先,头文件是错的。
#include<stdio.h> 

然后,截至到第一个for循环结束,代码按照以下规则构造了一个长度50的数组,数组中的数据类型是长整型

arr[i] = ?         i=0
arr[i] = 2           i=1
arr[i] = 3           i=2
arr[i] = arr[i-1]+arr[i-2]    2<i<50

然后,接下来就是具体查询某一个位置的数值,首先你输入你要查询几个数据,然后再输入具体哪个位置

scanf("%d",&t);    //输入你要查询几个数据,赋值给t。%d表示你输入的必须是整数
for(int i=1; i<=t; i++){     //循环t次
        scanf("%d",&digit);    //输入你要查询的数据的位置
        printf("Scenario #%d:\n%lld\n\n",i,arr[digit]);   //输出    Scenario #第几个:数据。\n表示换行
    }

你认真看数组,如果要查询arr[0],出现的会是什么?
这个我认为可能与编译器有关。因为arr[0]没有赋初值,所以:可能编译器默认赋值0,可能会出现随机数。
下面是运行结果(假如我要查询4个数据):

图片说明
如果对你有帮助,请采纳以鼓励。

arr这个数列,是以2 3开始的斐波拉契数列
每一项等于前两项之和
也就是
2 3 5 8 13 21 34 55 ...
这里是算出它的前t项,然后循环输入digit,输出第digit项的值。

int main()
{
    int t,digit;
    long long arr[50];
    arr[1]=2;
    arr[2]=3;
    {
            // 该语句块初始化数组arr[],使数组从索引1开始是一个斐波那契数列数列。2,3,5,8,13 ...
            for(int i=3; i<50; i++)
                arr[i]=arr[i-1]+arr[i-2];
    }
    {
            // 该语句块获取一个用户输入t
            scanf("%d",&t); //输入指令
    }
    {
            // 该语句块通过上面获取到的t值控制循环次数,每次得到一个digit,digit作为索引,打印arr中的斐波拉契数列的值。
            // 这里的输入digit没有做范围检查,有可能数组越界。
            for(int i=1; i<=t; i++)
            {
                scanf("%d",&digit);
                printf("Scenario #%d:\n%lld\n\n",i,arr[digit]);
            }
    }
    return 0;
}