分类：电脑/网络-程序设计-C/C++
问题：c的错误在哪？我的一个c程序，老是有错误，谁能帮我修正一下#de 
我的一个c程序，老是有错误，谁能帮我修正一下#define eps 1.0e-5#define c 1.0e-6#define FN1 "e1.dat"#define FN2 "e2.dat"#define FN3 "e3.dat"#define FNN "f.dat"#include"math.h"#include"STDIO.H"/*9*/main(){float E1[2],E2[2],E3[2]; float vf; float *pt; FILE *p;  pt=&E1; dload(F我的一个c程序，老是有错误，谁能帮我修正一下#define eps 1.0e-5#define c 1.0e-6#define FN1 "e1.dat"#define FN2 "e2.dat"#define FN3 "e3.dat"#define FNN "f.dat"#include"math.h"#include"STDIO.H"/*9*/main(){float E1[2],E2[2],E3[2]; float vf; float *pt; FILE *p;  pt=&E1; dload(FN1,pt); pt=&E2; dload(FN2,pt); p=fopen(FNN,"r"); if(p==NULL);  {printf("cannot open file \n");   exit(0);  } /*21*/pt=&vf; fread(pt,4,1,p); fclose(p); E3[1]=E1[1]>E2[1]?E2[1]:E1[1]; E3[2]=E1[2]>E2[2]?E2[2]:E1[2]; EMA(E1,E2,E3,vf); if((p=fopen(FN3,"a"))==NULL); {printf("cannot open file \n");  exit(0); }/*30*/ fwrite(E3,4,2,p); fclose(p); return(1);}dload(char FN[6],float*Kp) {FILE *fp;fp=fopen(FN,"r"); if(fp==NULL);  {printf("cannot open file \n");   exit(0);  }/*39*/ fread(Kp,4,2,fp); fclose(fp); }/*44*/float F(float K1[2],float K2[2],float K31,float K32,float w){float Re,Im,p1,p2,p3,A;p3=w*((K31-K1[1])*(2*K2[1]+K1[1])+(K32-K1[2])*(2*K2[2]-K1[2])); p1=(2*K2[1]+K31)*(2*K2[1]+K31)+(2*K2[2]+K31)*(2*K2[2]+K32); p2=(2*K2[1]+K1[1])*(2*K2[1]+K1[1])+(2*K2[2]+K1[2])*(2*K2[2]+K1[2]); Re=(1-w)*((K31-K2[1])*(2*K2[1]+K31)+(K32-K2[2])*(2*K2[2]+K32))/p1+p3/p2; Im=(1-w)*((K32-K2[2])*(2*K2[1]+K31)-(K31-K2[1])*(2*K2[2]+K32))/p1+p3/p2; A=Re*Re+Im*Im; return(A);}/*52*/EMA(float D1[2],float D2[2],float D3[2],float H) { int i; float FF,F,FF2; FF=F(D1,D2,D3[1],D3[2],H); FF1=F(D1,D2,D3[1]+c*D3[1],D3[2],H); FF2=F(D1,D2,D3[1],D3[2]+c*D3[2],H); for(i=0;;i++)  {if(FF<eps)   break;   else    {     D3[1]=D3[1]-FF*(FF1-FF)/(c*D3[1]);     D3[2]=D3[2]-FF*(FF2-FF)/(c*D3[2]);     FF=F(D1,D2,D3[1],D3[2],H);     FF1=F(D1,D2,D3[1]+c*D3[1],D3[2],H);     FF2=F(D1,D2,D3[1],D3[2]+c*D3[2],H);    }  } }
回答：你的错误：1，Inlcude 预处理命令必须放在最前面2，数组名可以当作数组第一个元素的地址使用，所以不用&3，打开文件时“r”必须是指定一个已经存在文件。//此处没给你修改，因为不知道你的程序要做什么事情//修改后的源程序如下#include"math.h"#include"STDIO.H"#define eps 1.0e-5#define c 1.0e-6#define FN1 "e1.dat"#define FN2 "e2.dat"#define FN3 "e3.dat"#define FNN "f.dat"/*9*/main(){float E1[2],E2[2],E3[2]; float vf; float *pt; FILE *p;  pt=E1; dload(FN1,pt); pt=E2; dload(FN2,pt); p=fopen(FNN,"r"); if(p==NULL);  {printf("cannot open file \n");   exit(0);  } /*21*/pt=&vf; fread(pt,4,1,p); fclose(p); E3[1]=E1[1]>E2[1]?E2[1]:E1[1]; E3[2]=E1[2]>E2[2]?E2[2]:E1[2]; EMA(E1,E2,E3,vf); if((p=fopen(FN3,"a"))==NULL); {printf("cannot open file \n");  exit(0); }/*30*/ fwrite(E3,4,2,p); fclose(p); return(1);}dload(char FN[6],float*Kp) {FILE *fp;fp=fopen(FN,"r"); if(fp==NULL);  {printf("cannot open file1\n");   exit(0);  }/*39*/ fread(Kp,4,2,fp); fclose(fp); }/*44*/float F(float K1[2],float K2[2],float K31,float K32,float w){float Re,Im,p1,p2,p3,A;p3=w*((K31-K1[1])*(2*K2[1]+K1[1])+(K32-K1[2])*(2*K2[2]-K1[2])); p1=(2*K2[1]+K31)*(2*K2[1]+K31)+(2*K2[2]+K31)*(2*K2[2]+K32); p2=(2*K2[1]+K1[1])*(2*K2[1]+K1[1])+(2*K2[2]+K1[2])*(2*K2[2]+K1[2]); Re=(1-w)*((K31-K2[1])*(2*K2[1]+K31)+(K32-K2[2])*(2*K2[2]+K32))/p1+p3/p2; Im=(1-w)*((K32-K2[2])*(2*K2[1]+K31)-(K31-K2[1])*(2*K2[2]+K32))/p1+p3/p2; A=Re*Re+Im*Im; return(A);}/*52*/EMA(float D1[2],float D2[2],float D3[2],float H) { int i; float FF,F,FF2; FF=F(D1,D2,D3[1],D3[2],H); FF1=F(D1,D2,D3[1]+c*D3[1],D3[2],H); FF2=F(D1,D2,D3[1],D3[2]+c*D3[2],H); for(i=0;;i++)  {if(FF<eps)   break;   else    {     D3[1]=D3[1]-FF*(FF1-FF)/(c*D3[1]);     D3[2]=D3[2]-FF*(FF2-FF)/(c*D3[2]);     FF=F(D1,D2,D3[1],D3[2],H);     FF1=F(D1,D2,D3[1]+c*D3[1],D3[2],H);     FF2=F(D1,D2,D3[1],D3[2]+c*D3[2],H);    }  } }