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

用C语言编程,实现调整数组,使奇数全部位于偶数前边,

2016-05-29 22:49 344 查看
函数要求实现功能:调整数组使奇数全部都位于偶数前面。
要求:
输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。

思考,要想实现此功能,首先对函数数组进行遍历,从两头进行,一个从前向后查看数组元素是否为奇数,一个从后向前查看数组元素是否为偶数,如果前为偶,后为奇则进行调换!
程序如下:
/*
**2.调整数组使奇数全部都位于偶数前面。
** 题目:
**输入一个整数数组,实现一个函数,
**来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,
**所有偶数位于数组的后半部分。
*/

#include<stdio.h>
#include<stdlib.h>
void adjust_arr(int arr[], int size)
{
int temp; int i, j;
/*将奇位数放在前,偶位数放在后*/
//if (size % 2 == 1)
//{
//	i = 1; j = size-1;
//}
//else
//{
//	i = 1; j = size - 2;
//}
//for (; i <= j; i += 2, j -= 2)
//{
//	temp = arr[i];
//	arr[i] = arr[j];
//	arr[j] = temp;
//}

/*将奇数放在前,偶数放在后*/
for (i = 0,j = size-1; i <j; )
{
if ((arr[i] % 2 == 0) && (arr[j] % 2 == 1))     //如果奇数在后,偶数在前,则进行调换
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
if (arr[i] % 2 == 1)   //如果arr[i]为奇数,i++
i++;
if (arr[j] % 2 == 0)   //如果arr[j]为偶数,j--
j--;
}
}

int main()
{
int arr[] = {  2, 3, 4, 5, 6, 7, 10,11,12,13,14,15,16,8, 9 ,17,18,19,20};
int i;
int size = sizeof(arr) / sizeof(arr[0]);
adjust_arr(arr, size);    //函数调用,队数组进行排序,
for (i = 0; i < size; i++)
printf("%d ",arr[i]);
printf("\n");
system("pause");
return 0;
}
本程序还附带实现一个功能,将奇数位与偶数位进行调换,如果哪位大神发现了程序的错误之处,欢迎批评指正!
本文出自 “分享中进步” 博客,请务必保留此出处http://xmwen1.blog.51cto.com/10730069/1712723
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: