当前位置: 代码迷 >> C语言 >> [求助]刚写的一个程序不能运行
  详细解决方案

[求助]刚写的一个程序不能运行

热度:154   发布时间:2006-05-07 00:09:00.0
[求助]刚写的一个程序不能运行
/*污染物在一维河流中扩散的简单数值仿真C程序*/
#include "stdio.h"
#include "math.h"
#define c1 0 /*河流中原污染物浓度*/
#define c2 1000 /*排污口污染物浓度*/
#define c0 500 /*c0=(c1*q1+c2*q2)/(q1+q2)污染物混合后浓度*/
#define q1 5000.0 /*河流原流量*/
#define q2 5000.0 /*排污口流量*/
#define Ex 20.0 /*纵向离散系数*/
#define u 10.0 /*河流平均流速*/
#define dt 0.5 /*时间间隔*/
#define dx 10.0 /*单位河流长度*/
#define L 10000.0 /*均匀河流总长度*/
#define T 1600.0 /*所研究时间的总长*/
int main(int argc, char *argv[])
{
double x,y,z;
x=Ex*dt/(dx*dx)-u*dt/(2*dx);
y=1.00-2*Ex*dt/(dx*dx);
z=Ex*dt/(dx*dx)-u*dt/dx;
if(u*dt/dx>1||Ex*dt/(dx*dx)>0.5)
printf("您的定义有误\n");
FILE *fp1;
if((fp1=fopen("sharelion.dat","w+"))==NULL)
{
printf("不能找到file.--sharelion.dat\n");
exit(0);
}
int i,j;
double a[1001],b[1001];
a[0]=c0;
for(i=1;i<L/dx;i++)
a[i]=c1;
for(j=1;j<T/dt;j++)
{for(i=0;i<L/dx;i++)
if(i==0)
b[i]=a[0];
else b[i]=x*a[i-1]+y*a[i]+z*[i+1];
for(i=0;i<L/dx;i++)
{
a[i]=b[i];
fprintf(fp1,"%lf\t",a[i];
}
fprintf(fp1,"\n");
printf("已运算%ld次,共%ld 次",i*j,L/dx*(T/dt));
}
fclose(fp1);
return 0;
}

搜索更多相关的解决方案: 运行  

----------------解决方案--------------------------------------------------------
自己顶一个~~~
----------------解决方案--------------------------------------------------------
以下是引用sharelion在2006-5-7 0:09:00的发言:
/*污染物在一维河流中扩散的简单数值仿真C程序*/
#include "stdio.h"
#include "math.h"
#define c1 0 /*河流中原污染物浓度*/
#define c2 1000 /*排污口污染物浓度*/
#define c0 500 /*c0=(c1*q1+c2*q2)/(q1+q2)污染物混合后浓度*/
#define q1 5000.0 /*河流原流量*/
#define q2 5000.0 /*排污口流量*/
#define Ex 20.0 /*纵向离散系数*/
#define u 10.0 /*河流平均流速*/
#define dt 0.5 /*时间间隔*/
#define dx 10.0 /*单位河流长度*/
#define L 10000.0 /*均匀河流总长度*/
#define T 1600.0 /*所研究时间的总长*/
int main(int argc, char *argv[])
{
double x,y,z;
x=Ex*dt/(dx*dx)-u*dt/(2*dx);
y=1.00-2*Ex*dt/(dx*dx);
z=Ex*dt/(dx*dx)-u*dt/dx;
if(u*dt/dx>1||Ex*dt/(dx*dx)>0.5)
printf("您的定义有误\n");
FILE *fp1;
if((fp1=fopen("sharelion.dat","w+"))==NULL)
{
printf("不能找到file.--sharelion.dat\n");
exit(0);
}
int i,j;
double a[1001],b[1001];
a[0]=c0;
for(i=1;i<L/dx;i++)
a[i]=c1;
for(j=1;j<T/dt;j++)
{for(i=0;i<L/dx;i++)
if(i==0)
b[i]=a[0];
else b[i]=x*a[i-1]+y*a[i]+z*a[i+1];
for(i=0;i<L/dx;i++)
{
a[i]=b[i];
fprintf(fp1,"%lf\t",a[i]);
}
fprintf(fp1,"\n");
printf("已运算%ld次,共%ld 次",i*j,L/dx*(T/dt));
}
fclose(fp1);
return 0;
}
[attach]6767[/attach]

//死循环,估计循环判断条件没写好.


----------------解决方案--------------------------------------------------------
  相关解决方案