用户输入10个数,输出排列好的数,使奇数在偶数之前。
如,
输入:奇 奇 偶 奇 偶 奇 偶 奇 偶 奇
输出:奇 奇 奇 奇 奇 奇 偶 偶 偶 偶
(“奇”为奇数,“偶”为偶数)
#define _CRT_SECURE_NO_WARNINGS 1
#define SIZE 10
#include <stdio.h>
#include <assert.h>
void Adjust_arr(int* p, int size)
{
assert(p);
int left = 0;
int right = size - 1;
int tem = 0;
while (left < right)
{
//左边是奇数,继续往right方向走
if (*(p + left) % 2 != 0)
{
left++;
}
//右边是偶数,继续往left方向走
if (*(p + right) % 2 == 0)
{
right--;
}
//两边找到可交换的数,进行交换
if ((left<right) && *(p + left) % 2 == 0 && *(p+right) % 2 != 0)
{
tem = *(p + left);
*(p + left) = *(p + right);
*(p + right) = tem;
left++;
right--;
}
}
}
int main()
{
int arr[SIZE] = { 0 };
int i = 0;
//用户提示信息
printf("请输入10个数字,期间用空格分隔:\n");
//输入
for (i = 0; i < SIZE; i++)
{
scanf("%d", arr + i);
}
//调整
Adjust_arr(arr, SIZE);
//输出
for (i = 0; i < SIZE; i++)
{
printf("%d ", arr[i]);
}
return 0;
}