考试题15 调整数字Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: G++;GCC;VC 描述给你N个整数构成的数列,要求将数列中的所有负数调整到数列前面,将正数调整到数列后面 (保持负数之间先后顺序,且保持正数之间的先后顺序) 例如:原来是1,0,5,-2,0,-3,3.经过f处理后变成-2,-3,0,0,1,5,3 输入格式第一行一个正整数N(N不大于20) 第二行是N个整数,每个整数由一个空格分隔 输出格式处理后的数列,每个数之间由一个空格分隔 输入样例7 1 0 5 -2 0 -3 3 输出样例-2 -3 0 0 1 5 3 |
#include <stdio.h>
void adjustArray(int arr[], int n) //adjustArray描述调整数组的作用
{
int temp[n];//temp即temporary的缩写,通常用来指临时的变量
int negIdx = 0, posIdx = n - 1;//“neg” 是 “negative(负数)” 的缩写,而“Idx” 则是“index(索引)”的缩写
// 将负数移到数组前面,正数移到数组后面
for (int i = 0; i < n; i++)
{
if (arr[i] < 0) //arr 是“array”的缩写,是数组的意思
{
temp[negIdx++] = arr[i];
} else {
temp[posIdx--] = arr[i];
}
}
// 将调整后的数组拷贝回原数组
for (int i = 0; i < n; i++)
{
arr[i] = temp[i];
}
}
int main() {
int N;
scanf("%d", &N);
int arr[N];
for (int i = 0; i < N; i++) {
scanf("%d", &arr[i]);
}
adjustArray(arr, N);
// 输出调整后的数组
for (int i = 0; i < N; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}