怎样实现25行想实现的两边数值的交换?,我不知道哪里出了问题,能请各位看看吗,说是从NUM中读取无效数据和写入缓冲区溢出
#include<stdio.h>
int main(void)
{
int n,l, r,k, NUM[1000] ,i,t;
scanf_s("%d%d", &n, &k);
getchar();
for (i = 0; i < n; i++)
{
scanf_s("%d", &NUM[i]);
for(l=0;l<n;l++)
{
NUM[l] = NUM[i];
if (NUM[l] >= NUM[k - 1])
break;
}
for (r = n; r > -1; r--)
{
NUM[r] = NUM[i];
if (NUM[r] < NUM[k - 1])
break;
}
t = NUM[l], NUM[l] = NUM[r], NUM[r] = t;
if (l == r||l==r+1)
{
for (i = 0; i < n; i++)
{
printf("%d ", NUM[i]);
}
}
}
return 0;
}