注册 登录
编程论坛 C语言论坛

把数组中的奇数元素放在原数组的后面

黑暗骑士5DSB 发布于 2020-03-30 16:25, 2820 次点击
把数组中的奇数元素按原来的先后顺序放在原数组的后面。 例如,如果原数组是“1 2 4 3 6 5 7 8 10 9”,则最后变化的结果是“2 4 6 8 10 1 3 5 7 9”。

函数接口定义:
void fun(int x[]);

      
   
其中x是用户传入的参数。 函数fun的功能是将数组x中的奇数元素按原来的先后顺序放在原数组的后面。

裁判测试程序样例:
#include <stdio.h>
#define N 10
void fun(int x[]);
int main()
{
int i,a[N];
for(i=0;i<N;i++)
  scanf("%d",&a[i]);
fun(a);
for(i=0;i<N;i++)
  printf("%5d",a[i]);
printf("\n");
 return 0;
 }

/* 请在这里填写答案 */

      
   
输入样例:
1 2 3 4 5 6 7 8 9 10

      
   
输出样例:
    2    4    6    8   10    1    3    5    7    9
4 回复
#2
lin51616782020-03-30 16:29
从后到前找奇数
从后到前找偶数
交换
#3
lin51616782020-03-30 16:31
看起来和这个问题一脉相承 你可以参考13楼的代码
https://bbs.bccn.net/viewthread.php?tid=500702
#4
叶纤2020-03-30 17:35
分3个桶,黄色桶装总共的成员
  绿色的装偶数   蓝色的桶装奇数
然后把绿色桶的东西把黄色桶的前半段替换掉,蓝色桶的东西把黄色桶的后半段替换掉,
然后输出
#5
纯蓝之刃2020-03-30 20:42
程序代码:
void fun(int x[])
{
    int c[N];
    int i,b_num=0,c_num=0;

    for(i=0;i<N;i++)
    {
        if(x[i]%2==0)
            x[b_num++]=x[i];
        else if(x[i]%2==1)
            c[c_num++]=x[i];
    }

    for(i=b_num,c_num=0;i<N;i++)
        x[i]=c[c_num++];
}
1