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总是出错啊?谁能帮忙解答一下 展开
外星人不袭击我们,他们所做的很简单,仅仅是在有毒液体上释放两个圆球组成的双球,双球飘向人类,然后使我们的噩梦成为现实。由于这些都是双球,其破坏力是一个圆球的两倍。外星人不擅长物理和数学,因此他们制造的双球有些也沉入到了毒液中。我们的科学家擅长物理,因此能确定这个球的质量,但不幸的是他们的数学也很差!因此他们向你求助来确定这个双球的体积和表面积,而且请你确定它是能飘在液体上还是下沉。你不必考虑漂浮和下沉的精度。设 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总是出错啊?谁能帮忙解答一下 展开
4个回答
展开全部
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");
}
这样就可以了
展开全部
感觉你的x求得有问题,应该是x=(R1*R1-R2*R2+D*D)/(2*D)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
怕是公式错了 吧。
追问
用的是球冠的面积体积公式,应该是没问题的,面积输出结果是一样,但是体积就有问题了 V=Pi*h^2*(R-h/3.0) h是球冠高度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先说说看,你是如何计算表面积和体积的?
追问
用的是球冠的面积体积公式,应该是没问题的,面积输出结果是一样,但是体积就有问题了 V=Pi*h^2*(R-h/3.0) h是球冠高度
追答
你计算的的体积是减去的两个球冠部分的体积吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询