VC改错~急急急

来源:百度知道 编辑:UC知道 时间:2024/05/27 03:44:11
一段试算h0的程序,改了好几次始终有问题,请高手协助。。
#include <stdio.h>
void main ()
{
float i,n,b,d,m,Q,h0;
i=0.0015;n=0.25;b=3;d=3.1415/3;m=1/tan(d);h0=1.50;
do
{
Q=(b+m*h0)*h0*1/n*(((b+m*h0)*h0)/(b+2*h0*(1+m*m)^(1/2)))^(2/3)*i^(1/2);
if (Q<10000)
h0=h0+0.01;
else if (Q>10000)
h0=h0-0.01;
}
while(Q=10000);
printf("%f",h0);
}

while(Q=10000);
改成while(Q==10000)
Q=(b+m*h0)*h0*1/n*(((b+m*h0)*h0)/(b+2*h0*(1+m*m)^(1/2)))^(2/3)*i^(1/2);
1/2之类要用1.0/2 或者1/2.0不然1/2=0

float 不能 ^

while(Q=10000);
卡在这里不往下执行了

while( Q = 10000 );这里出问题了,这个错误很容易忽视的。。。
改成while( Q == 10000 );才对,Q = 10000是赋值语句,而Q == 10000是比较(是否相等)语句

还有就是需要注意的:
float型的整数最好这样:比如b = 3.0;

Q=(b+m*h0)*h0*1/n*(((b+m*h0)*h0)/(b+2*h0*(1+m*m)^(1/2)))^(2/3)*i^(1/2);
里面的1/2和2/3等这样的会被直接等于0的,因为这是整数整除,比如1/2即1整除2除数为0,这样就容易出问题了。写成小数比较好。

#include "math.h"
此文件中定义了tan

^表示次方吧,必须用pow函数
double d11 = pow(2,3);

如果还有问题,可按照下面的方法与我沟通:
http://hi.baidu.com/%BA%CE%D6%BE%B5%A4/profile

while(Q=10000);错了
如果你要在Q刚刚好为10000时跳出循环的话,应该
while(Q != 10000);
如果你要在Q刚刚大于10000时跳出循环的话,应该
while(Q <= 10000);
如果你要在Q刚刚小于10000时跳出循环的话,应该
while(Q