注册 登录
编程论坛 C++教室

请帮我看看这个求圆锥面积程序有什么问题?

福利费 发布于 2010-10-12 20:37, 524 次点击
#include<stdio.h>
#define PI 3.14159
main()
{
 float r,h,v;
 printf("\nPlease input number:");
 scanf("%f %f",&r,&h);
 v=1/3*PI*r*r*h;
 printf("\nv=%f",v);
 }
4 回复
#2
tornador2010-10-12 21:16
这个关系到了一个运算时数据类型的默认转化,如果你把1/3放在后面,你会发现V的结果是正确的。
这是计算机在运算时,有一种默认的机制,在计算V时,先计算1/3,两者都是整形,计算结果是整形,结果为0.所以你会发现V是0;如果将V放在后面,先计算前面,由默认机制,因为PI是DOUBLE型,所以/3的结果也将转化为DOUBLE,所以结果是正确的。
正确代码如下:
#include<stdio.h>
#define PI 3.14159
main()
{
float r,h,v;
printf("\nPlease input number:");
scanf("%f%f",&r,&h);
printf("%f%f",r,h);
v=PI*r*r*h*1/3;
printf("\nv=%f",v);
}
或将计算结果强制转化为DOUBLE型
#include<stdio.h>
#define PI 3.14159
main()
{
float r,h,v;
printf("\nPlease input number:");
scanf("%f%f",&r,&h);
printf("%f%f",r,h);
v=(double)1/3*PI*r*r*h;
printf("\nv=%f",v);
}
希望对你有所帮助!
#3
m21wo2010-10-12 21:19
程序代码:
#include<stdio.h>
#define PI 3.14159
int main()
{
    float r,h,v;
    printf("\nPlease input number:");
    scanf("%f%f",&r,&h);
    v=PI*r*r*h/3;
    printf("\nv=%f",v);
}
像你那么写,v=1/3*PI*r*r*h;1/3=0,0乘任何数都等于零!所以计算就有误!
#4
福利费2010-10-13 17:10
回复 2楼 tornador
谢谢了!
#5
福利费2010-10-13 17:12
回复 3楼 m21wo
谢谢了!
1