可能是EOF这个判断条件被判错,
改成这个看看:
while(scanf("%f",&r)!=0)
冒险岛乐乐,在说别人的方案不行之前,最好先验证一下,
对于C,你了解多少,是不是只知道scanf返回的是书本上说的数据项数,
那你的知识太肤浅,
不要闭着眼睛乱喷
下面是运行截图,我的环境是VC++6.0
写法不规范。
当输入为字符时,程序会进入无限循环。楼上的也是这样。
改写如下:
#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;
}
杭电上的一般都用 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;
}