「已注销」 2022-09-16 11:27 采纳率: 90.2%
浏览 34
已结题

线性结构询问学号问题

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

有 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<stdio.h> 
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;
}

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

2条回答 默认 最新

  • qzjhjxj 2022-09-16 14:44
    关注

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

    #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;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月24日
  • 已采纳回答 9月16日
  • 创建了问题 9月16日