我编写的数据扩边程序,大神们帮我看看我哪里出错了
#include<stdio.h>
#include<stdlib.h>
#include<stddef.h>
#include<math.h>
#define X 10
#define Y 9
void main()
{
FILE *in,*out1,*out2;
char ch,infile[10],outfile1[10],outfile2[10];
int i,j;
double a[101][101],b[105][105],c[101][101],d[101][101];
double e;
/*读文件*/
printf("input the name of infile:\n");
scanf("%s",infile);
if((in=fopen(infile,"r"))==NULL);
{printf("cannot open file\n");
exit(0);}
ch=getchar();
fread(a[0],sizeof(a[101][101]),4,in);
/*存数据*/
for(i=0;i<102;i++)
for(j=0;j<102;j++)
b[i+2][j+2]=a[i][j];
/*扩边*/
for(j=1;j>=0;j--)
for(i=2;i<104;i++)
b[i][j]=2*b[i][j+1]-b[i][j+2];
for(j=104;j<=105;j++)
for(i=2;i<104;i++)
b[i][j]=2*b[i][j-1]-b[i][j-2];
for(i=1;i>=0;i--)
for(j=0;j<106;j++)
b[i][j]=2*b[i-1][j]-b[i-2][j];
for(i=104;i<106;i++)
b[i][j]=2*b[i+1][j]-b[i+2][j];
printf("input the size of angle(radian):\n");
scanf("%f",&e);
/*对数据进行一阶求导*/
for(i=0;i<102;i++)
for(j=0;j<102;j++)
c[i][j]=((b[i+2][j+3]-b[i+2][j+1])/(2*X))*cos(e)+((b[i+1][j+2]-b[i+3][j+2])/(2*Y))*sin(e);
/*对数据进行二阶求导*/
for(i=0;i<102;i++)
for(j=0;j<102;j++)
d[i][j]=((b[i-2][j-1]-2*b[i-2][j-2]+b[i-2][j-3])/(X*X))*cos(e)*cos(e)+((b[i-3][j-1]-b[i-3][j-3]-b[i-1][j-3]-b[i-3][j-3])/(4*X*Y))*1/2*sin(2*e)+((b[i-3][j-2]-2*b[i-2][j-2]+b[i-1][j-2])/(Y*Y))*sin(e);
printf("input the name of outfile1:\n");
scanf("%s",outfile1);
if((out1=fopen(outfile1,"w"))==NULL);
{printf("cannot open file\n");
exit(0);}
ch=getchar();
fwrite(c[0],sizeof(c[101][101]),4,out1);
printf("input the name of outfile2:\n");
scanf("%s",outfile2);
if((out2=fopen(outfile2,"w"))==NULL);
{printf("cannot open file\n");
exit(0);}
ch=getchar();
fwrite(d[0],sizeof(d[101][101]),4,out2);
fclose(in);
fclose(out1);
fclose(out2);
}