为何计算五边形面积的C++函数输出结果为0而非预期值?
五边形面积计算函数返回0的问题解决
问题出在代码中的整数除法:1/4在C++中会被当作两个整数运算,结果直接舍去小数部分,得到0。这导致整个面积计算式的结果被0相乘,最终返回0。
解决方案
将整数除法改为浮点数除法,确保运算过程中使用浮点类型计算:
- 把
1/4替换为1.0/4(或1/4.0),让编译器识别为浮点数运算 - 或者直接使用
0.25代替1/4
修正后的代码
#include <iostream> #include <cmath> double area_of_pentagon(int side){ double area = 1.0/4 * sqrt(5*(5+2*sqrt(5))) * side * side; return area; } int main(){ std::cout.precision(4); // 控制输出精度以匹配预期结果 std::cout << area_of_pentagon(6) << std::endl; }
运行修正后的代码,输入边长6时会输出约61.94(实际精确值为61.9372),符合预期。
内容的提问来源于stack exchange,提问作者asvalk1672
相关产品推荐
相关产品推荐

