航电acm2002题

2024-12-28 10:21:07
推荐回答(3个)
回答1:

可能是EOF这个判断条件被判错, 

改成这个看看: 

while(scanf("%f",&r)!=0)

冒险岛乐乐,在说别人的方案不行之前,最好先验证一下,

对于C,你了解多少,是不是只知道scanf返回的是书本上说的数据项数,

那你的知识太肤浅,

不要闭着眼睛乱喷

下面是运行截图,我的环境是VC++6.0

回答2:

写法不规范。
当输入为字符时,程序会进入无限循环。楼上的也是这样。
改写如下:
#include
#include
#define PI 3.1415927
int main()
{
double r;/*直接用double,因为编译器会把float自动转换成double型进行计算,最后输出时又转换成float型,即浪费时间又影响精度*/
while(scanf("%lf",&r)==1) /*以函数scanf()的返回值是否为1作为判断条件*/
printf("%.3f\n",PI*r*r*r*4.0/3.0);/*最好把4和3写成浮点数*/
return 0;
}

回答3:

杭电上的一般都用 double

不用 float

这是我的AC 代码

#include
#define PI 3.1415927
int main()
{
double v,r;
while(scanf("%lf",&r)!=EOF)
{
v=4*PI*r*r*r/3;
printf("%.3lf\n",v);
}
return 0;
}