如何让C++圆与球体计算程序仅接收一次用户输入?
解决方案
要实现仅输入一次半径完成所有计算,核心是将半径的输入逻辑集中到main函数,再把半径作为参数传递给各个计算函数,同时修正原代码里的几个细节错误:
关键修改点
- 重构三个计算函数,让它们接收
double类型的半径参数,移除函数内部的半径输入逻辑 - 在
main函数中统一获取用户输入的半径值 - 修正球体体积计算中的整数除法问题:
(4/3)是整数运算结果为1,需改为4.0/3.0确保浮点运算 - 修正球体表面积函数的输出文本错误(原代码误写为体积)
- 调整输出格式匹配你期望的样式
修改后的完整代码
#include <iostream> #include <cmath> #define Pi 3.1415 using namespace std; // 接收半径参数,计算并输出圆面积 void area_of_circle(double radius) { double areaCircle = Pi * radius * radius; cout << "Area of a circle is " << ceil(areaCircle * 100.0) / 100.0 << " square inches" << endl; } // 接收半径参数,计算并输出球体体积 void volume_of_sphere(double radius) { // 用4.0/3.0避免整数除法 double volumeSphere = (4.0/3.0) * Pi * radius * radius * radius; cout << "Volume of a sphere is " << ceil(volumeSphere * 100.0) / 100.0 << " cubic inches" << endl; } // 接收半径参数,计算并输出球体表面积 void surface_area_of_sphere(double radius) { double surfaceAreaSphere = 4 * Pi * radius * radius; // 修正输出文本 cout << "Surface area of a sphere is " << ceil(surfaceAreaSphere * 100.0) / 100.0 << " square inches" << endl; } int main() { double radius; // 统一输入半径 cout << "Enter a radius in inches: "; cin >> radius; // 传入半径参数调用各计算函数 area_of_circle(radius); volume_of_sphere(radius); surface_area_of_sphere(radius); return 0; }
为什么你之前的input函数没用?
你写的input函数仅输出了提示信息,但没有读取用户输入并将半径值传递给后续的计算函数,同时main里的radius变量未被赋值,也没有传递给三个计算函数,所以无法实现预期效果。
内容的提问来源于stack exchange,提问作者Audrey W.
相关产品推荐
相关产品推荐

