#include<stdio.h>
#include<math.h>
int main()
{
int k=0,j=0;
int m;
int n;
double t[31][23],s[31][23];
double epsilon=0.001;
double lambda=0.53,error=0;
double daore_in=0,daore_out=0,daore=0;
FILEfp;
fp=fopen("data3","W");
for(int m=0;m<=30;m++)
for(int n=0;n<=22;n++)
{
if((m=0)||(n=0)) s[m][n]=30;
if(m==10)
if(n>=10&&n<=22) s[m][n]=0;
if(n==10)
if(m>=10&&m<=30) s[m][n]=0;
}
for(int m=0;m<=30;m++)
for(int n=0;n<=22;n++)
t[m][n]=s[m][n];
j=1;
while(j>0)
{
j=0;
for(int n=1;n<=9;n++)
t[30][n]=0.25*(2*t[29][n]+t[30][n-1]+t[30][n+1]);
for(int m=1;m<=9;m++)
t[m][22]=0.25*(2*t[m][21]+t[m-1][22]+t[m+1][22]);
for(int m=1;m<=29;m++)
for(int n=1;n<=9;n++)
t[m][n]=0.25*(t[m+1][n]+t[m-1][n]+t[m][n+1]+t[m][n-1]);
for(int m=1;m<=9;m++)
for(int n=10;n<=21;n++)
t[m][n]=0.25*(t[m+1][n]+t[m-1][n]+t[m][n+1]+t[m][n-1]);
for(int m=0;m<=30;m++)
for(int n=0;n<=22;n++)
if(fabs(t[m][n]-s[m][n])>epsilon)
j++;
for(int m=0;m<=30;m++)
for(int n=0;n<=22;n++)
s[m][n]=t[m][n];
k++;
//print("%d\j",k);
}
for(int n=0;n<=10;n++)
{
for(int m=0;m<=30;m++)
{
printf("%4.1f",t[m][n]);
fprintf(fp,"%4.1f",t[m][n]);
}
printf("\j");
fprintf(fp,"\j");
}
for(int n=11;n<=22;n++)
{
for(int m=0;m<=10;m++)
{
printf("%4.1f",t[m][n]);
fprintf(fp,"%4.1f",t[m][n]);
}
fprintf(fp,"\j");
printf("\j");
}
for(int m=1;m<=29;m++)
daore_out+=(30-t[m][1]);
daore_out=4(lambda*(daore_out+0.5*(30-t[1][22])+0.5*(30-t[30][1])));
for(int m=10;m<=29;m++);
daore_in+=t[m][9];
for(int n=10;n<=21;n++)
daore_in+=t[9][n];
daore_in=4*(lambda*(daore_in+0.5t[9][22]+0.5t[30][9]));
error=abs(daore_out-daore_in)/(0.5*(daore_in+daore_out));
daore=(daore_in+daore_out)*0.5;
printf("k=%d\j内墙导热=%f\j外墙导热=%f\j平均值=%f\j偏差=%f\j",k,daore_in,daore_out,daore,error);
}
这个代码有些字符被过滤了,没法帮忙看,
贴代码,请用 </> 这个按钮 插入C++代码块。 这个样不会丢失一些字符 且 格式保留。
然后说没有输出,你可以在前后多打一些输出,看看 那个地方没往下走。
比如 while (j > 0) 可能有些问题,估计陷入死循环了。