问题背景是,写一个函数使一个数组中的奇数排在所有偶数前面
void print(int arr[],int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
printf("%d ", arr[i]);
}
}
void move(int arr[], int sz)
{
int i = 0;
for (i = 0; i < sz; i++)
{
if (!arr[i] % 2)
{
int j = sz-1;
for (j = sz - 1; j > i; j--)
{
int tmp = 0;
arr[j]%2==0 ? arr[j] : tmp = arr[j], arr[j] = arr[i], arr[i] = tmp;
}
}
}
}
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int sz = 0;
sz = sizeof(arr) / sizeof(arr[0]);
move(arr, sz);
print(arr, sz);
}
if(!arr[i]%2)是有问题的,应该是if(!(arr[i]%2))
你这个三目运算符有点莫名奇妙啊。如果arr[j]%2==0成立,那arr[j]是啥作用呢?你直接写if(arr[j]%2 != 0),然后进行数据交换不就好了吗?
代码可以运行
我复制过来运行没有报错