个人对洛谷“P1428 小鱼比可爱”有点疑惑,求解答

洛谷P1428 小鱼比可爱

img

两组感觉没什么区别的代码
为什么前者会有第二组样例报错?

img

前者:

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

后者:

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

求问题出在哪?

两段代码没有区别,但共同问题就在第5行里,scanf("%d\n",&n); 输入语句里多了'\n' 符,应修改为:scanf("%d",&n);