您的位置:首页 > 编程语言 > C语言/C++

C语言 程序实现将一个数组所有奇数放在前半部分,偶数位于后半部分

2016-12-28 14:39 806 查看
       输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

       数组奇数位于前半部分,偶数位于后半部分,实现这个需要用到循环,在写函数时,要知道奇数和偶数满足的条件是什么,循环开始当满足前半部分下标小于后半部分下标(first<end)时,如果前面的数是奇数则下标往前再走一个,重复执行,直到遇到偶数,下标不动,后半部分下标开始,如果是偶数,则下标往前走,直到遇到一个奇数,下标满足交换条件,则把这两个数交换,使奇数位于前面,偶数换到后面。

程序如下:

#include <stdio.h>
#include <string.h>
#include <assert.h>
int swap(int *x, int *y)   //交换两个变量的内容
{
int tmp;
tmp = *x;
*x = *y;
*y = tmp;
}
void show(int arr[], int length)   //打印arr的内容
{
assert(arr);
int i = 0;
for (i = 0; i < length ; i++)
{
printf("%d ", arr[i]);
}
printf("\n");

}
int *newline(int *arrold,int len )
{
assert(arrold);
int first = 0;
int end = len - 1;
int i = 0;
while (first < end)
{
while ((first < len) && (first<end) && (arrold[first] & 1))
{
first++;   //如果是奇数,则执行循环体内容
}
while ((end>first) && (end>0) && !(arrold[end] & 1))
{
end--;   //如果是偶数执行循环体内容
}
if (first < end)
{
swap(&arrold[first], &arrold[end]);   //前一个数是偶数,后一个数是奇数,交换两数
first++;    //前面下标往后移,后面前移
end--;
}
}
}
int main()
{
int array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 945,66,76,33 };
int len = sizeof(array) / sizeof(array[0]);
show(array, len);     //奇偶交换前打印一下
newline(array,len);
show(array, len);
system("pause");
return 0;
}


运行结果如下图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐