先看题目:
append.c:
int main()
{
int len;
double *array;
scanf("%d", &len);
array = allocate(len);
input(array, len);
output(array, len);
release(array);
}
下面是AC代码:
#include<stdlib.h>
#include<stdio.h>
#include<string.h>
double* allocate(int n)
{
double *p=(double*)calloc(n,sizeof(double));
return p;
}
void input(double* p, int n)
{
for (int i=0; i<n; i++)
{
scanf("%lf",&p[i]);
}
}
void output(double* p, int N)
{
int m,n;
scanf("%d%d",&m,&n);
if (m>N||n<1)
{
printf("no output\n");
}
else if(m>=1&&n>N)
{
for (int i=m-1; i<N; i++)
printf("%lg\n",p[i]);
}
else if(m<1&&n<=N)
{
for (int i=0; i<n; i++)
printf("%lg\n",p[i]);
}
else if (m>=1&&n<=N)
{
for (int i=m; i<n; i++)
printf("%lg\n",p[i]);
}
}
void release(double* p)
{
free(p);
}
这里用到了calloc:
calloc(int n; int size);动态申请数组存储空间:n为数组中元素个数,size为申请的内存的大小;
calloc和malloc一样都包含在stdlib.h中。
这个题目我觉得主要是练习数组的动态内存分配,其他的都按照要求去做就可以了。