C语言问题,求求大神们帮忙看看

在一部电影中,有一些来自太空的圆球,能使人的噩梦转化为现实。打个比方来说,如果你梦见你正被狮子袭击,那么在现实中你周围的人将会遭到狮子袭击。外星人不袭击我们,他们所做的很... 在一部电影中,有一些来自太空的圆球,能使人的噩梦转化为现实。打个比方来说,如果你梦见你正被狮子袭击,那么在现实中你周围的人将会遭到狮子袭击。
外星人不袭击我们,他们所做的很简单,仅仅是在有毒液体上释放两个圆球组成的双球,双球飘向人类,然后使我们的噩梦成为现实。由于这些都是双球,其破坏力是一个圆球的两倍。外星人不擅长物理和数学,因此他们制造的双球有些也沉入到了毒液中。我们的科学家擅长物理,因此能确定这个球的质量,但不幸的是他们的数学也很差!因此他们向你求助来确定这个双球的体积和表面积,而且请你确定它是能飘在液体上还是下沉。你不必考虑漂浮和下沉的精度。设 pi=2*arccos(0)。

输入数据的第一行是整数N,表示输入数据的组数。接下来的N行,每一行代表一组输 入,每组包含5个整数:R1(0<=500)和R2(0<=500)分别表示双球的半径,单位是cm;d(表示双球的球心距,单位是cm,而 且d>max(R1,R2)且d<(R1+R2);球的质量w(w<10000000000,单位是克),有毒液体的密度s(0<s<10)。
每组输入情况都有两行输出。第一行是圆球的体积和表面积(保留到小数点后4位),如果双球是下沉的,在第二行输出“The Paired-Sphere Sinks.”,否则输出“The Paired-Sphere Floats.”。

测试用例 1
2↵
10 10 15 300 1.0↵
20 20 30 650000 1.0↵
以文本方式显示
8017.6063 2199.1149↵
The Paired-Sphere Floats.↵
64140.8500 8796.4594↵
The Paired-Sphere Sinks.↵

我的代码:
#include <stdio.h>

#include <math.h>

#define Pi 2*acos(0)

void calculate();

int main(int argc, const char * argv[])

{

int n,i;

scanf("%d",&n);

for(i=0;i<n;i++)

calculate();

return 0;

}

void calculate()

{

double R1, R2, D, W, V, S, x;

long double s,Density;

scanf("%lf %lf %lf %lf %Lf",&R1 ,&R2,&D, &W, &s);

x=(R1*R1-R2*R2)/(0.2*D);

V=(Pi*(x+R1)*(x*R1)*(R1-(x+R1)/3.0))+(Pi*(R2+D-x)*(R2+D-x)*(R2-(R2+D-x)/3.0));

S=2*Pi*R1*(x+R1)+2*Pi*R2*(R2+D-x);

printf("%.4lf %.4lf\n",V ,S );

Density=W/V;

if(Density>s)

printf("The Paired-Sphere Sinks.\n");

else printf("The Paired-Sphere Floats.\n");

}
为什么V总是出错啊?谁能帮忙解答一下
展开
 我来答
liruih8121099
游戏玩家

2014-09-10 · 游戏我都懂点儿,问我就对了
知道小有建树答主
回答量:561
采纳率:75%
帮助的人:174万
展开全部
void calculate()
{
    double R1, R2, D, W, V, S, x;
    long double s,Density;
    scanf("%lf %lf %lf %lf %Lf",&R1 ,&R2,&D, &W, &s);
    x=(R1*R1-R2*R2)/(0.2*D);
    double tmp1 = Pi / 3 * ( R1 - (R1*R1-R2*R2+D*D)/(2*D) )*( R1 - (R1*R1-R2*R2+D*D)/(2*D) )*(3*R1 - (R1 - (R1*R1-R2*R2+D*D)/(2*D) ));
    double tmp2 = Pi / 3 * ( R2 - (R2*R2-R1*R1+D*D)/(2*D) )*( R2 - (R2*R2-R1*R1+D*D)/(2*D) )*(3*R2 - (R2 - (R2*R2-R1*R1+D*D)/(2*D) ));
    V = 4.0/3 * Pi * ( R1 * R1 * R1 + R2 * R2 * R2 ) - (tmp1 + tmp2);
    S=2*Pi*R1*(x+R1)+2*Pi*R2*(R2+D-x);
    printf("%.4lf %.4lf\n",V ,S );
    Density=W/V;
    if(Density>s)
        printf("The Paired-Sphere Sinks.\n");
    else
        printf("The Paired-Sphere Floats.\n");
}

这样就可以了

chiyoohui
2014-09-10 · TA获得超过280个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:137万
展开全部
感觉你的x求得有问题,应该是x=(R1*R1-R2*R2+D*D)/(2*D)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萨斯_
2014-09-10
知道答主
回答量:23
采纳率:100%
帮助的人:11.1万
展开全部
怕是公式错了 吧。
追问
用的是球冠的面积体积公式,应该是没问题的,面积输出结果是一样,但是体积就有问题了 V=Pi*h^2*(R-h/3.0)  h是球冠高度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cdinten
2014-09-10 · TA获得超过6589个赞
知道大有可为答主
回答量:3562
采纳率:56%
帮助的人:1333万
展开全部
先说说看,你是如何计算表面积和体积的?
追问
用的是球冠的面积体积公式,应该是没问题的,面积输出结果是一样,但是体积就有问题了 V=Pi*h^2*(R-h/3.0)  h是球冠高度
追答
你计算的的体积是减去的两个球冠部分的体积吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式