请问为什么输入n为4的时候程序正常运行输出正确结果,但n不为4的时候结果就不对啊?

程序要求:先输入一个n,再输入n个整数,再把这n个数从大到小输出


#include<stdio.h>
#define N n
int main()
{
int n,t;
while(scanf("%d",&n))
{

int a[N];

for(int k=0;k<n;k++)
scanf("%d",&a[k]);
for(int b=0;b<n;b++)
            {  for(int i=0;i<n;i++)
                if(a[i]<a[i+1])
                {
                   t=a[i+1];
                   a[i+1]=a[i];
                   a[i]=t;
                }
            }
            
            for(int i=0;i<n;i++)
            printf("%d",a[i]);
}       
            
}

你这是个冒泡排序啊

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

#define N n
改成
#define N 100 试试

嗯,照着改过之后对了欸,谢谢