C语言中如何把符合要求的数放到另一个数组中?

比如说,要求我们输入20个数,将其中的偶数和奇数分别按从大到小的顺序排列。此时我需要新的数组来存放偶数和奇数,想问一下怎样实现呢?我的C语言比较烂啊,希望可以回答的具体点,最好加点说明。。。呵呵,谢谢啦~
谢谢你们,你们回答的都很好……yumenfeiyu945 回答的更清楚简明一些,更容易理解……真理的寻找,谢谢你提醒我,放心,我不会只是单纯的复制粘贴的,我会好好想明白程序的意思……因为刚开始学C,很多格式都不懂,所以只有把程序写出来我才明白意思……- -#
无论怎样,真的很谢谢你们~

定义三个数组a[],b[],c[]。第一个a[]用来存放你输出的20个数字,后两个一个b[]存放奇数一个c[]存放偶数。

首先要按照顺序读取a[]中这20个数字,然后进行判断,如果能被2整除那么就放进c[],如果不能被2整除就放入b[]。直到20个数都完成,然后做一个冒泡的排序或者选择排序,再对b[],c[]进行排序。

问题就解决了。我想我已经说的很清楚了。我之所以不给你写代码是因为希望你能从中得到收获,我给你写完了,你复制粘贴就没意思了。

如果不明白继续补充说明吧,分不分的不重要。重要的是对你有所帮助
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-04

首先,编写一个“过滤器”函数:

/*以“把奇数放到另一个数组”为例*/
int is_odd(int number) {
    return number % 2 == 1;
}

然后,编写主函数:

/*返回符合条件的数的个数*/
size_t put_conditional(
    int *       dest, /*目标数组*/
    const int * source, /*原数组*/
    size_t      n, /*原数组所含元素个数*/
    int       (*filter)(int) /*“过滤器”函数指针,指向的函数当符合某条件时返回非零值,否则返回零*/
    ) {
    int * start = dest;
    const int * end = source + n;
    while (source < end) {
        if ((*filter)(*source)) /*如果符合条件*/
            *dest++ = *source; /*那么就放到dest指向的数组中*/
        source++;
    }
    return dest - start;
}

调用的时候:

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, b[10];
size_t i, n;
n = put_conditional(b, a, 10, is_odd); /*把a数组中的奇数放到b数组中*/
for (i = 0; i < n; i++) {
    printf("%d ", b[i]); /*把a数组中的奇数打印出来*/
}

第2个回答  推荐于2017-09-12
int num[20],num1[20],num2[20];
int i,j,k;
i=j=k=0;
//num存放所有数据,num1放偶数,num2放奇数
输入数据后
for(i=0;i<20;i++)
{
if(num[i]%2==0)
{
num1[j]=num[i];
j++;
}
else
{
num2[k]=num[i];
k++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了本回答被提问者采纳
第3个回答  2015-05-16
int num[20],num1[20],num2[20];
int i,j,k;
i=j=k=0;
//num存放所有数据,num1放偶数,num2放奇数
输入数据后
for(i=0;i<20;i++)
{
if(num[i]%2==0)
{
num1[j]=num[i];
j++;
}
else
{
num2[k]=num[i];
k++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
第4个回答  2015-07-04

    第一想法,肯定用循环做啊。

    循环次数自己把握,因为我不知道是什么具体的东西。用if()判断所得的数是否符合条件。

    如果符合条件,就在if()语句中将其存入数组,类似于

if(i % 5 == 0){

    a[i] = i;

}

当然了,如果if中只有一句话,大括号是可以省略的。

大致上就是这样了,不知道是不是你想要的答案。

相似回答