鱼C论坛

 找回密码
 立即注册
查看: 682|回复: 2

[已解决]Re2=(4.0*Q2)/(PAI*v*d);这句话怎么改才对啊

[复制链接]
发表于 2020-6-8 09:43:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
具体代码如下
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
知道是提示的数据会丢失,但不知道如何改


最佳答案
2020-6-8 18:59:15
用的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后可以运行出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-8 17:48:29 | 显示全部楼层
有没有人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-8 18:59:15 | 显示全部楼层    本楼为最佳答案   
用的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后可以运行出来了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-13 15:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表