标题:请帮我看看这个求圆锥面积程序有什么问题?
只看楼主
福利费
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:109
专家分:197
注 册:2010-9-26
结帖率:100%
已结贴  问题点数:20 回复次数:4 
请帮我看看这个求圆锥面积程序有什么问题?
#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);
 }
搜索更多相关主题的帖子: 圆锥 面积 
2010-10-12 20:37
tornador
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:34
专家分:118
注 册:2010-10-4
得分:20 
这个关系到了一个运算时数据类型的默认转化,如果你把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);
}
希望对你有所帮助!
2010-10-12 21:16
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:0 
程序代码:
#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乘任何数都等于零!所以计算就有误!

If You Want Something, Go Get It, Period.
2010-10-12 21:19
福利费
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:109
专家分:197
注 册:2010-9-26
得分:0 
回复 2楼 tornador
谢谢了!
2010-10-13 17:10
福利费
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:109
专家分:197
注 册:2010-9-26
得分:0 
回复 3楼 m21wo
谢谢了!
2010-10-13 17:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322716-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.112639 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved