线性结构询问学号问题

问题遇到的现象和发生背景 题目描述

有 n(n \le 2 \times 10^6)n(n≤2×10
6
) 名同学陆陆续续进入教室。我们知道每名同学的学号(在 11 到 10^910
9
之间),按进教室的顺序给出。上课了,Teacher想知道第 ii 个进入教室的同学的学号是什么(最先进入教室的同学 i=1i=1),询问次数不超过 10^510
5
次。

输入格式
第一行 22 个整数 nn 和 mm,表示学生个数和询问次数。

第二行 nn 个整数,表示按顺序进入教室的学号。

第三行 mm 个整数,表示询问第几个进入教室的同学。

输出格式
输出 mm 个整数表示答案,用换行隔开。

输入输出样例
输入 #1复制
10 3
1 9 2 60 8 17 11 4 5 14
1 5 9
输出 #1复制
1
8
5

用代码块功能插入代码,请勿粘贴截图
#include 
int main()
{
    int n,m;
    int a;
    scanf("%d %d",&n,&m);
    double b[n];
    while(n--){
        scanf("%lf",&b[n]);
    }
    while(m--){scanf("%d",a);
    printf(m!=0?"%.0lf\n":"%.0lf",b[n-a+1]);
    }
    return 0;
}

运行结果及报错内容 输入样例但是没有输出结果
我的解答思路和尝试过的方法
我想要达到的结果 不知道哪里出错了 请求指导

题主的代码修改如下,供参考:

#include<stdio.h> 
int main()
{
    int n, m, b[100000], a, i;
    scanf("%d %d", &n, &m);
    i = n;
    while (i--) {  //n 需要保持不变,后面还要用到
        scanf("%d", &b[i]);
    }
    while (m--) {
        scanf("%d", &a);  //scanf("%d",a); a 前面缺了 ‘&’ 符
        printf(m != 0 ? "%d\n" : "%d", b[n - a]); //修改
    }
    return 0;
}

老老实实地按常规的来不行吗?又不是很熟练,搞那么花里胡哨的

#include<stdio.h> 
int main()
{
    int n,m;
    int a;
    scanf("%d %d",&n,&m);
    int b[n], ask[m];
    for(int i=0; i<n; i++)
    {
        scanf("%d", &b[i]);
    }
    for(int i=0; i<m; i++)
    {
        scanf("%d",&ask[i]);
    }
    for(int i=0; i<m; i++)
    {
        printf("%d\n", b[ask[i]-1]);
    }
    return 0;
}