我只是想把函数里的数组返回给
主函数,然后在主函数里输出它
其实,这只是程序的一个小部分
整个的程序是:
double *X_1()
{
double (*X1)[10];
int k;
for(k=0;k<=9;k++)
(*X1)[k]=0.06+0.1*k;
return(*X1);
}
double *X_2()
{
double (*X2)[10];
int k;
for(k=0;k<=9;k++)
(*X2)[k]=-0.06-0.1*k;
return(*X2);
}double *F_1(double *X)
{
double (*F1)[10];
int k;
for(k=0;k<=9;k++)
(*F1)[k]=1/(1+25*(*(X+k))*(*(X+k)));
for(k=0;k<=9;k++)
{printf("%f",(*F1)[k]);
printf("\n");
}
return(*F1);
}double *x_1()
{ double (*x1)[11];
int i;
for(i=0;i<=10;i++)
(*x1)[i]=-1+i*2/10;
return(*x1); }double *f_1(double *x)
{
double (*f1)[11];
int i;
for(i=0;i<=10;i++)
(*f1)[i]=1/(1+25*(*(x+i))*(*(x+i)));
return(*f1);
}double *l_1(double *x,double *X)
{ double (*l1)[11];
int i,j;
(*l1)[0]=1;
for(i=0;i<=10;i++)
{j=0;
while(i!=j)
{
(*l1)[i]=((*X-(*(x+j)))/(*(x+i)-(*(x+j))))*(*l1)[i];
j++; }
j++;
while(j<11)
{(*l1)[i]=((*X-(*(x+j)))/(*(x+i)-(*(x+j))))*(*l1)[i];
j++;
}
}
return(*l1);
}
double *s_1(double *X)
{
double (*s1)[11];
double *x,*f,*l;
int i,j;
x=x_1();
f=f_1(x);
l=l_1(x,X);
(*s1)[0]=1.0;
for(i=0;i<=10;i++)
{
for(j=0;j<=i;j++)
{
(*s1)[i]=(*s1)[i]*((*(f+j))*(*(l+j)));
}
}
return(*s1);
}
void main()
{
double *X;
double *s;
double *F;
int i;
printf("Head!!!");
printf("\n");
printf("\n");
printf("\n");
for(i=0;i<10;i++)
{X=X_1()+i;
F=F_1(X);
s=s_1(X);
printf("%3f",*F);
printf("%3f",*s);
}
for(i=0;i<10;i++)
{
X=X_2()+i;
F=F_1(X);
s=s_1(X);
printf("%3f",*F);
printf("%3f",*s);
}
}
主函数,然后在主函数里输出它
其实,这只是程序的一个小部分
整个的程序是:
double *X_1()
{
double (*X1)[10];
int k;
for(k=0;k<=9;k++)
(*X1)[k]=0.06+0.1*k;
return(*X1);
}
double *X_2()
{
double (*X2)[10];
int k;
for(k=0;k<=9;k++)
(*X2)[k]=-0.06-0.1*k;
return(*X2);
}double *F_1(double *X)
{
double (*F1)[10];
int k;
for(k=0;k<=9;k++)
(*F1)[k]=1/(1+25*(*(X+k))*(*(X+k)));
for(k=0;k<=9;k++)
{printf("%f",(*F1)[k]);
printf("\n");
}
return(*F1);
}double *x_1()
{ double (*x1)[11];
int i;
for(i=0;i<=10;i++)
(*x1)[i]=-1+i*2/10;
return(*x1); }double *f_1(double *x)
{
double (*f1)[11];
int i;
for(i=0;i<=10;i++)
(*f1)[i]=1/(1+25*(*(x+i))*(*(x+i)));
return(*f1);
}double *l_1(double *x,double *X)
{ double (*l1)[11];
int i,j;
(*l1)[0]=1;
for(i=0;i<=10;i++)
{j=0;
while(i!=j)
{
(*l1)[i]=((*X-(*(x+j)))/(*(x+i)-(*(x+j))))*(*l1)[i];
j++; }
j++;
while(j<11)
{(*l1)[i]=((*X-(*(x+j)))/(*(x+i)-(*(x+j))))*(*l1)[i];
j++;
}
}
return(*l1);
}
double *s_1(double *X)
{
double (*s1)[11];
double *x,*f,*l;
int i,j;
x=x_1();
f=f_1(x);
l=l_1(x,X);
(*s1)[0]=1.0;
for(i=0;i<=10;i++)
{
for(j=0;j<=i;j++)
{
(*s1)[i]=(*s1)[i]*((*(f+j))*(*(l+j)));
}
}
return(*s1);
}
void main()
{
double *X;
double *s;
double *F;
int i;
printf("Head!!!");
printf("\n");
printf("\n");
printf("\n");
for(i=0;i<10;i++)
{X=X_1()+i;
F=F_1(X);
s=s_1(X);
printf("%3f",*F);
printf("%3f",*s);
}
for(i=0;i<10;i++)
{
X=X_2()+i;
F=F_1(X);
s=s_1(X);
printf("%3f",*F);
printf("%3f",*s);
}
}
double *X_1()
{
double (*X1)[10]; //这儿定义的是一个指针数组
int k;
for(k=0;k<=9;k++)
(*X1)[k]=0.06+0.1*k; //这句就很难看懂,
return(*X1);
}我猜你是想写成这样:
double *X_1()
{
double X1[10];
int k;
for(k=0;k<=9;k++)
X1[k]=0.06+0.1*k;
return(X1);
}