我编写的数据扩边程序,大神们帮我看看我哪里出错了

u013846420 2014-03-01 09:05:45
#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);

}
...全文
80 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧