输入一组数组,调整数组顺序使得数组内的奇数全部位于偶数前
首先定义一组数组arr,利用循环来输入数组
定义sz来限制循环次数
int main()
{
int arr[10] = {0};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i ++)
{
scanf("%d",&arr[i]);
}
}
然后开始调整数组
定义一个第三方数组tmp,把筛选出的奇数存入该数组中
//调整
int tmp[10] = { 0 };
int j = 0;
//处理奇数
for (i = 0; i < sz; i++)
{
if (arr[i] % 2 == 1)
{
tmp[j] = arr[i];
j++;
}
}
处理偶数也是一样的方法,把偶数存入tmp数组中,此时tmp数组的下标“j”从上一轮中的循环继续累加,并不是从0开始
//处理偶数
for (i = 0; i < sz; i++)
{
if (arr[i] % 2 == 0)
{
tmp[j] = arr[i];
j++;
}
}
最后重新把tmp数组里的数利用循环赋值给arr数组
for (i = 0; i < sz; i++)
{
arr[i] = tmp[i]; //i与j只是数组的下标的表示
}
//开始打印
for (i = 0; i < sz; i++)
{
printf("%d ",arr[i]);
}
return 0;
可能会混淆tmp[i]与tmp[j],两者是一样的,i与j都只是数组的下标
全部代码如下
#include
#include
int main()
{
int arr[10] = {0};
int i = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
for (i = 0; i < sz; i ++)
{
scanf("%d",&arr[i]);
}
//调整
int tmp[10] = { 0 };
int j = 0;
//处理奇数
for (i = 0; i < sz; i++)
{
if (arr[i] % 2 == 1)
{
tmp[j] = arr[i];
j++;
}
}
//处理偶数
for (i = 0; i < sz; i++)
{
if (arr[i] % 2 == 0)
{
tmp[j] = arr[i];
j++;
}
}
for (i = 0; i < sz; i++)
{
arr[i] = tmp[i];
}
for ( i = 0; i < sz; i++)
{
printf("%d ",arr[i]);
}
return 0;
}
运行结果如下:
输入1,2,3,4,5,6,7,8,9,10