用冒泡法排序,不知道错那了

问题遇到的现象和发生背景
用代码块功能插入代码,请勿粘贴截图
我想要达到的结果
#include
int main()
{ int i,j,t,n,k;
 scanf("%d",&n);
 int a[n];
 for(k=0;k<n;k++)
  { scanf("%d",&a[n]);
  }
  for(i=0;i<n-1;i++)
    for(j=0;j<n-i-1;j++)
      if(a[j]>a[j+1])
       { t=a[j];
       a[j]=a[j+1];
       a[j+1]=t;
       }
       for(i=0;i<n;i++)
       printf("%d ",a[i]);
    return 0;
}

数组长度不能用变量,并且输入的那一块是&a[k],不是&a[n],代码修改如下,当然,有些编辑器是支持数组长度用变量的,你试试你的支持不,不支持的话就把数组长度改成一常量。
有帮助的话采纳一下哦!

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

int a[n];//里面不可以是变量,很简单的问题,语法问题
你可以宏定义n,例如:#define n 100;

//封装冒泡排序函数用法如下,参考

 
#include<stdio.h>
void bubble_sort(int arr[],int sz)//参数类型解释②
{
    for (int i = 0; i < sz-1; i++)
    {
        for (int j = 0; j <sz-1-i; j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int main()
{
    int arr[] = { 9,8,7,4,5,6,1,2,3,0 };
    int sz = sizeof(arr) / sizeof(arr[0]);//变量sz位置及计算注意事项①
    bubble_sort(arr,sz);//参数类型解释②
    for (int i = 0; i < 10; i++)//输出交换后的数组
    {
        printf("%d  ", arr[i]);
    }
    return 0;
}

数组长度不能用变量n来表示只能用常量数字表示
写一个常量10再将n=10试试
int a[10]; n=10;
scanf("%d",&a[n])这里把n改为k 因为你循环是k在变化

scanf("%d", &a[k])