70,024
社区成员




scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p,&hf,&l,&d,&v,&a,&b,&Q);
while(1) { //在上面那条语句的后面加上while循环
然后在最后一个if
if (H<b)
{
printf("成功");
break; //在这里加break退出循环
}
else { //这里加个else
Q = Q2; //把Q2赋给Q,因为上面用while循环,所以这里会重新回到while的地方再计算的
//如果不管怎么计算都会进入这个else就会死循环,你要考虑用个计数器记录循环次数,超过次数则退出循环
}
} //这个是和while的{ 对应
#include <stdio.h>
#include<math.h>
#define PAI 3.1415926535
#define g 9.8
//void main()
int main()
{
double p,hf,l,d,v,a,b,Q,Re,e,y,Q1,Q2,y1,y2,R1,R2,e1,e2,H;//s为圆周率
printf("请依次输入密度p、沿程阻力损失hf、管程长度l、直径d、运动黏度v、粗糙度a、精度b、流量Q\n");
//scanf("%f%f%f%f%f%f%f%f",&p,&hf,&l,&d,&v,&a,&b,&Q);
scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&p,&hf,&l,&d,&v,&a,&b,&Q);
//Re=(4*Q)/(s*v*d); //s未初始化
Re=(4*Q)/(PAI*v*d); //s未初始化
e=(2*a)/d;
if(Re<=2000)
{ y=64/Re; }
else if(2000<Re<(59.7/(pow(e,8/7))))
{ y=(0.3164/(pow(Re,0.25)));
}
else if((59.7/pow(e,8/7))<Re<((665-765*log10(e))/e))
{ y=1/pow((-1.8)*log10((6.8/Re)+pow((a/d)/3.7,1.11)),2);
}
else if(R1>(665-765*log10(e))/e)
{ y=1/pow(2*log10((3.7*d)/a),2);
}
//Q1=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y*l.0),0.5);
Q1=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y*l),0.5);
//Re1=(4*Q1)/(PAI*v*d);
R1 = (4*Q1)/(PAI*v*d);
e1 = (2*a)/d;
//if (Re1<=2000)
if (R1<=2000)
{
//y1=64/Re1;
y1=64/R1;
}
//else if(2000<Re1<(59.7/(pow(e1,8/7))))
else if(2000<R1 && R1 < (59.7/(pow(e1,8/7))))
{
//y1=(0.3164/(pow(Re1,0.25)));
y1=(0.3164/(pow(R1,0.25)));
}
//else if((59.7/pow(e1,8/7))<Re1<((665-765*log10(e1))/e1))
else if((59.7/pow(e1, 8/7)) < R1 && R1<((665-765*log10(e1))/e1))
{
//y=1/pow((-1.8)*log10((6.8/Re1)+pow((a/d)/3.7,1.11)),2);
y=1/pow((-1.8)*log10((6.8/R1)+pow((a/d)/3.7,1.11)),2);
}
//else if(Re1>(665-765*log10(e1))/e1)
else if(R1>(665-765*log10(e1))/e1)
{ y1=1/pow(2*log10((3.7*d)/a),2);
}
//Q2=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y1*l.0),0.5);
Q2=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y1*l),0.5);
H=(Q1-Q2)/Q1;
if (H<b)
{
printf("成功");
}
}