24小时热门版块排行榜    

查看: 500  |  回复: 8
当前主题已经存档。

lichuanhang

金虫 (正式写手)

[交流] 【求助】哪位大哥能帮忙看看这个程序的错误啊【已完结】

#include
#include
#include
void main()
{
        int i;
        double a=1,b=3,c,d;
        double K[3],C[3],E1=4.6447E+03,f1[3],f3[3];
    double P=1.013,X;
        X=a/b;
    double F1=0,F2=0,F3=0,F4=0;
float t;
   for(i=0;i<3;i++)
{C=((i+1)*4E+03)/P;
   /*printf("%f\n",C);*/
}
printf("请输入温度初值t:";
scanf("%f",&t);
/*printf("%.1f\n",t);*/
do{
       
        for(i=0;i<3;i++){
                d=-E1/(1.8*t+492);
c=pow(2.718,d);
K=C*c;
/*printf("%f\n",K);*/
}
for(i=0;i<3;i++){       
        f3=K*X;
/*printf("%f\n",K);
printf("%f\n",X);*/
        F3+=f3;
        /*printf("%f\n",f3);*/
}
/*printf("%f\n",F3);*/
F2=F3-1;
F3=F4;
printf("%f\n",F2);

if (F2<0) break;


for(i=0;i<3;i++){
f1=K*X*1.8*E1/((1.8*t+492)*(1.8*t+492));
F1+=f1;

}
/*printf("%f\n",F1); */
t=t-F2/F1;
/*printf("%f\n",t); */
F1=F4;
}
while(1);
printf("%fPa时的泡点温度为:%0.1f",P,t);
}
谢谢各位,这个程序使用牛顿迭代求泡点温度,是我的VC有问题,结果没问题

[ Last edited by 余泽成 on 2009-10-15 at 11:07 ]
回复此楼

» 猜你喜欢

相逢一笑皆知己
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

senlia

木虫 (小有名气)


余泽成(金币+1,VIP+0):辛苦了! 10-14 21:58
我编译没出错啊 程序也能运行 你的意思是不是结果不满足你的要求?
请问你要达到的目的是什么 程序中间用到的公式能否传一个文件上来看看 否则 你这程序怎么看得懂是干什么的呀?
另外 编写c文件的时候 建议换行用回车键 会自动缩进的 那样看起来也清楚
书到用时方恨少, 天涯何处无芳草.
2楼2009-10-14 21:32:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

没仔细看,只是瞄到了这个 while(1);
搂住想做啥呀?
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
3楼2009-10-14 21:40:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

senlia

木虫 (小有名气)

while(1); 语法上倒是没啥问题 主要是..这个程序..别说公式..连注释都没有..楼主编程序以后可要注意多写注释啊 不然过段时间自己都不知道程序写的啥了..
书到用时方恨少, 天涯何处无芳草.
4楼2009-10-14 21:58:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)

楼上的,while(1)没问题吗?我怎么看是死循环呢?

ps:暴汗啊,没看到上面有个do,以为是平白无故的单独一行while(1),万恶的格式啊~.~!

[ Last edited by magic7004 on 2009-10-15 at 09:39 ]
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
5楼2009-10-15 09:35:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


余泽成(金币+1,VIP+0):辛苦,欢迎常来程序软件版! 10-15 09:58
vc6.0试了下,语法错误:
1.  X=a/b这行报错,把它移动到float t;后面就OK了
2.  t=t-F2/F1;这行F2和F1是double,t是float,转换可能损失精度。

逻辑错误肯定有,搂住自己找吧。我试了下,结果是:
初值           泡点温度
0                0
1                1
3                3
5                5
200            死循环
300            死循环
500            死循环
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
6楼2009-10-15 09:48:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

senlia

木虫 (小有名气)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
余泽成(金币+1,VIP+0):辛苦了! 10-15 09:59
lichuanhang(金币+10,VIP+0):搞定了,谢谢 10-15 10:41
哦 上面有个do啊 我在实验室还专门打成C++的换行格式 看得清楚些 在寝室没有编译软件 只能看楼主发的这个了 呵呵
我编译过 输入10 运行结果还是10 能跳出循环的 因为有个‘if (F2<0) break;’ 我想这个就没问题了 不会死循环的
只有等楼主发话了 他不说明程序意图 谁也帮不上忙啊

楼上用VC60编译有错啊..我郁闷了..我们实验室只有2005 用起来一点都不习惯 开始是说有个什么错误 然后跳过了 然后程序就能编译出来 还能运行..

ps: 哦 对了 我记得'X=a/b;'放在前面应该也不会有错的吧 因为c++是允许这样的格式的 就是变量可以随处定义 只要没有重复定义就行 可能是你的文件后缀名不是cpp

[ Last edited by senlia on 2009-10-15 at 09:56 ]
书到用时方恨少, 天涯何处无芳草.
7楼2009-10-15 09:48:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by senlia at 2009-10-15 09:48:
ps: 哦 对了 我记得'X=a/b;'放在前面应该也不会有错的吧 因为c++是允许这样的格式的 就是变量可以随处定义 只要没有重复定义就行 可能是你的文件后缀名不是cpp
...

我是用.c编译的,因为感觉搂住用的不是C++。
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
8楼2009-10-15 10:45:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

senlia

木虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
引用回帖:
Originally posted by magic7004 at 2009-10-15 10:45:


我是用.c编译的,因为感觉搂住用的不是C++。

不过我觉得是c++ 因为我们当初学c的时候main函数前面不加void的 我觉得加void是c++的习惯 可能我的理解有点偏激吧
书到用时方恨少, 天涯何处无芳草.
9楼2009-10-15 10:52:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lichuanhang 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见