已知数字的位置关系,怎么放到一个数组里
展开全部
首先,编写一个“过滤器”函数:
/*以“把奇数放到另一个数组”为例*/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 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数组中的奇数打印出来*/}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询