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

比如说,要求我们输入20个数,将其中的偶数和奇数分别按从大到小的顺序排列。此时我需要新的数组来存放偶数和奇数,想问一下怎样实现呢?我的C语言比较烂啊,希望可以回答的具体点... 比如说,要求我们输入20个数,将其中的偶数和奇数分别按从大到小的顺序排列。此时我需要新的数组来存放偶数和奇数,想问一下怎样实现呢?我的C语言比较烂啊,希望可以回答的具体点,最好加点说明。。。呵呵,谢谢啦~
谢谢你们,你们回答的都很好……yumenfeiyu945 回答的更清楚简明一些,更容易理解……真理的寻找,谢谢你提醒我,放心,我不会只是单纯的复制粘贴的,我会好好想明白程序的意思……因为刚开始学C,很多格式都不懂,所以只有把程序写出来我才明白意思……- -#
无论怎样,真的很谢谢你们~
展开
 我来答
百度网友ce293ac
2008-05-15 · TA获得超过1253个赞
知道小有建树答主
回答量:475
采纳率:0%
帮助的人:372万
展开全部
定义三个数组a[],b[],c[]。第一个a[]用来存放你输出的20个数字,后两个一个b[]存放奇数一个c[]存放偶数。

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

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

如果不明白继续补充说明吧,分不分的不重要。重要的是对你有所帮助
piestkj
推荐于2017-09-04 · TA获得超过927个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:604万
展开全部

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

/*以“把奇数放到另一个数组”为例*/
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数组中的奇数打印出来*/
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yumenfeiyu945
推荐于2017-09-12 · TA获得超过8976个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:225万
展开全部
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2015-05-16 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1314万
展开全部
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiasuhuei321
2015-07-04 · TA获得超过521个赞
知道小有建树答主
回答量:563
采纳率:0%
帮助的人:275万
展开全部
  1. 第一想法,肯定用循环做啊。

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

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

if(i % 5 == 0){

    a[i] = i;

}

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

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

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式