C语言编写圆面积计算代码得到错误输出问题
问题原因
- 核心错误是C语言的整数除法截断规则:当除法的两个操作数都是
int类型时,会执行整数除法,直接舍弃小数部分,仅保留整数结果。 - 你的预期公式是
22/7*r*r,如果用整数运算的话22/7的结果是3,代入r=7计算得到3*7*7=147,正好和你得到的错误输出一致。 - 你贴出的代码中
1/7*radius的写法也存在同样问题,1和7都是int类型,1/7运算结果为0,会得到完全错误的0值,属于公式排版和运算优先级的双重错误。
修复方案
只需要把除法的其中一个操作数改为浮点类型,触发浮点除法即可,同时对齐圆面积的正确公式πr²,修正后的aoc函数如下:
float aoc (float radius) { // 用22.0触发浮点除法,得到正确的π近似值 float area = 22.0 / 7 * radius * radius; return area; }
修改后输入半径7,就会得到预期的154左右的输出结果。
内容的提问来源于stack exchange,提问作者Aàrohan YT
相关产品推荐
相关产品推荐

