Re2=(4.0*Q2)/(PAI*v*d);这句话怎么改才对啊
具体代码如下include <stdio.h>
#include<math.h>
#define PAI 3.1415926535
#define g 9.8
void main()
{
double p,hf,l,d,v,a,b,Q,Re,e,y,s,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);
Re=(4*Q)/(s*v*d);
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(Re>(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);
Re1=(4*Q1)/(PAI*v*d);
e1=(2*a)/d;
if(Re1<=2000)
{
y1=64/Re1;
}
else if(2000<Re1<(59.7/(pow(e1,8/7))))
{
y1=(0.3164/(pow(Re1,0.25)));
}
else if((59.7/pow(e1,8/7))<Re1<((665-765*log10(e1))/e1))
{
y=1/pow((-1.8)*log10((6.8/Re1)+pow((a/d)/3.7,1.11)),2);
}
else if(Re1>(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);
Re2=(4.0*Q2)/(PAI*v*d);
e2=(2*a)/d;
if(Re2<=2000)
{
y2=64/Re2;
}
else if(2000<Re2<(59.7/(pow(e2,8/7))))
{
y2=(0.3164/(pow(Re2,0.25)));
}
else if((59.7/pow(e2,8/7))<Re2<((665-765*log10(e2))/e2))
{
y=1/pow((-1.8)*log10((6.8/Re2)+pow((a/d)/3.7,1.11)),2);
}
else if(Re2>(665-765*log10(e2))/e2)
{
y2=1/pow(2*log10((3.7*d)/a),2);
}
H=(Q1-Q2)/Q1;
if (H<b)
{
printf("成功");
}
}
错误提示:F:\C程序设计\111\123.c(57) : warning C4244: '=' : conversion from 'double ' to 'int ', possible loss of data
知道是提示的数据会丢失,但不知道如何改
有没有人
用的VS2019调试出来了
include <stdio.h>这里是你少贴了#号吗
Re1,Re2没定义你定义一下
Q1=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y*l.0),0.5);
Q2=pow((g*pow(PAI,2.0)*pow(d,2.0)*hf)/(8.0*y1*l.0),0.5);
这里的l.0中你用的是小写的L你是用1.0还是变量l自己改吧
scanf("%f%f%f%f%f%f%f%f",&p,&hf,&l,&d,&v,&a,&b,&Q);这里用了%lf
仍然报错给所有变量初始化为0后可以运行出来了
页:
[1]