C++程序里递归怎么用啊?要输出多组数据, 但是怎么弄都只能输出一组。

在程序最后输出数据上面,p1,p2,p3,T1,T2,T3,x,y8个未知量需要再次代入循环计算,前面定义的因为字数原因全删掉了,只有主程序也删了一部分龙哥库塔做的删了K... 在程序最后输出数据上面, p1,p2,p3,T1,T2,T3,x,y 8个未知量需要再次代入循环计算,前面定义的因为字数原因全删掉了 , 只有主程序也删了一部分 龙哥库塔做的 删了K2 K3 K4的值
//main function

int main(void)
{ double h;
double p1,p2,p3,T1,T2,T3,x,y;
double k11,k21,k31,k41,k51,k61,k71,k81;
double k12,k22,k32,k42,k52,k62,k72,k82;
double k13,k23,k33,k43,k53,k63,k73,k83;
double k14,k24,k34,k44,k54,k64,k74,k84;
int i;

for(i=0;i<=10000;i++)
{
//代入初始值

p1=700000,p2=101325,p3=101325,T1=288,T2=288,T3=288,x=0,y=0,h=0.00001;
//k1的值

k11=fp1(p1,T1,p2);
k21=fT1(p1,T1,p2);
k31=fp2(p1,T1,p2,T2,x,y);
k41=fT2(p1,T1,p2,T2,x,y);
k51=fp3(p3,T3,x,y);
k61=fT3(p3,T3,x,y);
k71=fx(y);
k81=fy(p2,p3,x);
//各腔室压力与温度以及活塞位移与速度的值
p1=p1+h/6*(k11+2*k12+2*k13+k14);
T1=T1+h/6*(k21+2*k22+2*k23+k24);
p2=p2+h/6*(k31+2*k32+2*k33+k34);
T2=T2+h/6*(k41+2*k42+2*k43+k44);
p3=p3+h/6*(k51+2*k52+2*k53+k54);
T3=T3+h/6*(k61+2*k62+2*k63+k64);
x=x+h/6*(k71+2*k72+2*k73+k74);
y=y+h/6*(k81+2*k82+2*k83+k84);
//数据输出

FILE *fp;
fp=fopen("rungr_kutta_.txt","w");

if (fp==NULL)
{
printf("file failure\n");
exit(1);
}

fprintf(fp,"%f ",p1);
fprintf(fp,"%f ",T1);
fprintf(fp,"%f ",p2);
fprintf(fp,"%f ",T2);
fprintf(fp,"%f ",p3);
fprintf(fp,"%f ",T3);
fprintf(fp,"%f ",x);
fprintf(fp,"%f ",y);
fprintf(fp,"\n");

fclose(fp);
return 0;
}
}
好像是没循环到, 只循环了一次,。
展开
 我来答
匿名用户
推荐于2016-04-01
展开全部

fp=fopen("rungr_kutta_.txt","w");
改为

fp=fopen("rungr_kutta_.txt","a+");
就好了

用"w"模式,每打开一次,就把上一次文件覆盖掉了,所以你只能看到最后一次打开文件后的输出。
"a+"是追加的模式,打开文件后在文件的最后面进行输出,这样保证你之前的输出不会丢失。要注意的是,用这种模式,你的程序每次运行的输出都会保存在这个文件中,如果想在结果文件中只保存最后次程序运行的输出结果,可以在程序刚运行时先把文件删除,也可以先这样创建一次结果文件:
FP *fp=fopen("rungr_kutta_.txt","w");
if (fp)

{
fclose(fp);
fp =-NULL;

}

这样文件被清空,后面再执行
fp=fopen("rungr_kutta_.txt","a+");
就可以了
更多追问追答
追问
试了一下,还是只有一组数据。是for循环的地方出错了吗? 运算是放在for后面的括号了啊
追答
改为 fp=fopen("rungr_kutta_.txt","a+"); 可存储多组结果,这是我测试过的。

因为你的部分代码未贴出,我不确定是否还有其它干扰因素。
如果想彻底解决该问题,建议把代码都贴出来。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式