用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!
Posted 两颗苹果
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!相关的知识,希望对你有一定的参考价值。
用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!
(使用函数的形式表达)
首先,根据要求,初始化一个整型数组。
比如:
int arr[] = { 1, 4, 6, 5, 15, 24, 3, 9, 16, 18};
其次我们就要考虑如何去编写一个程序去实现此项功能?
- 怎么去查找一个数组当中的每一个元素。
- 如何判断某个元素是奇数或者是偶数。
- 判断完成之后又如何交换位置(两两交换)。
我们逐个去解决这三个问题:
第一个,在此时首先根据要求会思考怎么去查找一个数组当中的每一个元素呢?
我们大家之前是不是都了解过冒泡排序,他的其中一个功能就是怎么去查找数组当中的每一个元素,所以,我们这个程序将会运用冒泡排序相关的知识去完成(也就是大的框架将会和冒泡排序相似)
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
//如何判断和交换
}
}
第二个,那又如何判断这个元素是奇数还是偶数呢?
可以被2整除的就是偶数,反之,不能被2整除的就是奇数。所以运用单目操作符就可以解决,
判断奇数 :
arr[j + 1] % 2 != 0
判断偶数 :
arr[j + 1] % 2 == 0
第三个,如何交换位置?
定义一个整形变量即可完成。
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
最后一个就是如何查看交换后的数组
void print(int arr[], int len)
{
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
}
以上各部分分析工作已经完成,以下附完整代码以及运行结果。
完整代码:
#include<stdio.h>
#include<windows.h>
#pragma warning(disable:4996)
void Adjustparityorder(int arr[],int len)
{
for (int i = 0; i < len - 1; i++)//表示要查找每个元素的趟数
{
for (int j = 0; j < len - i - 1; j++)//表示要开始查找每个元素
{
if (arr[j] % 2 == 0 && arr[j + 1] % 2 != 0)//判断交换的条件(奇数在前,偶数在后)
//如果想要偶数在前,奇数在后可将交换条件改为(arr[j] % 2 != 0 && arr[j+1] % 2 == 0 )
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
void print(int arr[], int len)//查看是否调整成功
{
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
}
int main()
{
int arr[] = { 1, 4, 6, 5, 15, 24, 3, 9, 16, 18};
int len = sizeof(arr) / sizeof(arr[0]);
Adjustparityorder(arr,len);
print(arr, len);
system("pause");
return 0;
}
运行结果:
如果哪里有不对的地方,或者改正的地方,希望大家不吝赐教哦。
以上是关于用C语言简单的调整数组使奇数全部都位于偶数前面(或者后面)!!!的主要内容,如果未能解决你的问题,请参考以下文章