69,373
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include "math.h"
#include <conio.h>//
#include <istream.h>
#include <stdlib.h>
int * getSubarray(int a[ ], int len, int m, int n);
int iOrignal[] = {3, 9, -3, 1, 0, 3, 10};
int main(int argc, char* argv[])
{
int * pi;
int m = 0;
int n = 3;
pi = getSubarray(iOrignal, sizeof(iOrignal)/sizeof(int), m, n);
if(pi == NULL)
printf("取值时低值大于高值");
else
{
printf("新数组为:\n");
for(int iE = 0; pi[iE] != 3+1; iE++)
printf("%d,",pi[iE]);
}
free(pi);
getch();
}
/*
getSubarray函数从数组a中抽取值为m,n(m <= n)之间的数(含m,n),组成并返回新数组指针.
当m > n时,返回NULL
新数组以元素值为(n + 1)表数组结束.
*/
int * getSubarray(int a[ ], int len, int m, int n)
{
if (m > n)
return NULL;
int * result = (int *)calloc(sizeof(int), len+1);
int iCount = 0;
for (int i = 0; i < len; i++)
{
if(a[i] >= m && a[i] <= n)
{
result[iCount] = a[i];
iCount++;
}
}
printf("获得元素个数:%d\n",iCount);
int * piReturn = (int *)realloc(result, sizeof(int) * (iCount + 1 + 1));
piReturn[iCount] = n+1;
return piReturn;
}