#include \\\"stdlib.h\\\"
#include \\\"stdio.h\\\"
FILE *fp;
double *linspace(double,double,int);
int main(void){
double start,end;
int Npoint,i;
double *result;
printf(\\\"input start and end :!\\\\n\\\");
scanf(\\\" %f %f\\\",
printf(\\\"intput Npoint\\\\n\\\");
scanf(\\\" %d\\\",
result=linspace(start,end,Npoint);
if((fp=fopen(\\\"lin.dat\\\",\\\"w\\\"))==NULL){
printf(\\\"error when open the file lin.dat.\\\\n\\\");
return 1;
}
for(i=0;iNpoint;i){
// printf(\\\"%f\\\\n\\\",result);
fprintf(fp,\\\"%f\\\\n\\\",result);
}
free(result);
fclose(fp);
return 0;
}
double *linspace(double start,double end,int Npoint){
double *data;
double interval;
int i;
data=(double *)malloc(Npoint*sizeof(double));
interval=(end-start)/(Npoint-1);
printf(\\\"interval is %f\\\\n\\\",interval);
data[0]=start;
for(i=1;iNpoint;i){
data=data[i-1] interval;
}
return data;
}
源程序如上,把double改成float就能正常运行,
我判断不正常的依据是 interval=(end-start)/(Npoint-1);
这个interval的输出结果不正确。
|