见程序
#include<stdio.h>
int main(void)
{
int i,x;
double r,p,ca,sa,v;
scanf("%f",&r);//输入半径
for(i=0;i<10000;i++)
{
printf("Choose an option:\n1 computer and display the circle perimeter.----------\n");
scanf("%d",&x);
if(x==0)
break;
switch(x){
case 1:p=2*r*3.14;printf("%f\n",p);break;//算 圆的周长
case 2:ca=3.14*r*r;printf("%lf\n",ca);break;//算圆的面积
case 3:sa=4*3.14*r*r;printf("%lf\n",sa);break;//算球的面积
case 4:v=4/3*3.14*r*r*r;printf("%lf\n",v);break;//算球的体积
}
}
}
当把里面的变量定义为double时,结果全是0,把double改为float就有了正确的结果。。
这是为什么?双精度的double不行反而单精度的float行。希望大神给个答案。