while那里这样写有问题吗,我的输出结果不对
```c++
#include
#include
int main()
{ int n,t,i;
scanf("%d",&n);
int a[n];
while(scanf("%d",&a[n])!=0)
{ for(i=0;ifabs(a[i]);
if(a[i]>a[i+1])
{ t=a[i];a[i]=a[i+1];a[i+1]=t;
}
}
for(i=0;iprintf("%d ",a[i]);
}
}
return 0;
}
```
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<assert.h>
int main()
{
int n, t, i;
scanf("%d", &n);
//动态申请n个空间大小的内存
int* a = (int*)malloc(sizeof(int) * n);
assert(a != nullptr);
int pos = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a[pos++]);//保存n个数字
}
//对这些数字进行绝对值排序
for (int i = 0; i < n; i++) {
for (int j = i; j < n; j++) {
if (abs(a[i]) > abs(a[j])) {
int tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
//打印排序后的数组
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
free(a);
return 0;
}