C语言中如何把符合要求的数放到另一个数组中?
比如说,要求我们输入20个数,将其中的偶数和奇数分别按从大到小的顺序排列。此时我需要新的数组来存放偶数和奇数,想问一下怎样实现呢?我的C语言比较烂啊,希望可以回答的具体点...
比如说,要求我们输入20个数,将其中的偶数和奇数分别按从大到小的顺序排列。此时我需要新的数组来存放偶数和奇数,想问一下怎样实现呢?我的C语言比较烂啊,希望可以回答的具体点,最好加点说明。。。呵呵,谢谢啦~
谢谢你们,你们回答的都很好……yumenfeiyu945 回答的更清楚简明一些,更容易理解……真理的寻找,谢谢你提醒我,放心,我不会只是单纯的复制粘贴的,我会好好想明白程序的意思……因为刚开始学C,很多格式都不懂,所以只有把程序写出来我才明白意思……- -#
无论怎样,真的很谢谢你们~ 展开
谢谢你们,你们回答的都很好……yumenfeiyu945 回答的更清楚简明一些,更容易理解……真理的寻找,谢谢你提醒我,放心,我不会只是单纯的复制粘贴的,我会好好想明白程序的意思……因为刚开始学C,很多格式都不懂,所以只有把程序写出来我才明白意思……- -#
无论怎样,真的很谢谢你们~ 展开
7个回答
展开全部
定义三个数组a[],b[],c[]。第一个a[]用来存放你输出的20个数字,后两个一个b[]存放奇数一个c[]存放偶数。
首先要按照顺序读取a[]中这20个数字,然后进行判断,如果能被2整除那么就放进c[],如果不能被2整除就放入b[]。直到20个数都完成,然后做一个冒泡的排序或者选择排序,再对b[],c[]进行排序。
问题就解决了。我想我已经说的很清楚了。我之所以不给你写代码是因为希望你能从中得到收获,我给你写完了,你复制粘贴就没意思了。
如果不明白继续补充说明吧,分不分的不重要。重要的是对你有所帮助
首先要按照顺序读取a[]中这20个数字,然后进行判断,如果能被2整除那么就放进c[],如果不能被2整除就放入b[]。直到20个数都完成,然后做一个冒泡的排序或者选择排序,再对b[],c[]进行排序。
问题就解决了。我想我已经说的很清楚了。我之所以不给你写代码是因为希望你能从中得到收获,我给你写完了,你复制粘贴就没意思了。
如果不明白继续补充说明吧,分不分的不重要。重要的是对你有所帮助
展开全部
首先,编写一个“过滤器”函数:
/*以“把奇数放到另一个数组”为例*/
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数组中的奇数打印出来*/
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
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++;
}
}
这样就分开了偶数和奇数,只要再分别排序就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一想法,肯定用循环做啊。
循环次数自己把握,因为我不知道是什么具体的东西。用if()判断所得的数是否符合条件。
如果符合条件,就在if()语句中将其存入数组,类似于
if(i % 5 == 0){
a[i] = i;
}
当然了,如果if中只有一句话,大括号是可以省略的。
大致上就是这样了,不知道是不是你想要的答案。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询