C++如何实现输入任意数值给变量完成对应算术计算
问题根因
C++遵循逐行顺序执行逻辑,你的代码执行顺序完全写反了:
- 先给
stocks赋初始值0 - 立刻用这个初始0值完成了
investment、charges、total所有关联变量的计算 - 所有计算跑完后,才输出提示读取用户输入的
stocks值
这种写法下,之前计算出的结果不会因为stocks后续被用户输入覆盖就自动更新,无论用户输入什么数值,计算环节用的永远是初始的0,自然无法实现交互效果。你之前尝试删除变量、修改初始值、调整局部代码位置没有效果,核心原因是没有把所有依赖stocks的计算逻辑挪到读取用户输入的操作之后。
修正方案
stocks = 0;这行本身没有错误,它只是给变量设置初始默认值,后续用户输入会自动覆盖这个值,不需要删除或修改- 调整代码执行顺序:先输出交互提示、读取用户输入,等
stocks拿到用户输入的真实值后,再执行所有依赖该值的计算 - 涉及金额、手续费这类带小数的计算,变量请用
double类型声明,避免用int类型导致小数部分被截断,出现计算错误
修正后的可运行参考代码:
#include <iostream> using namespace std; int main() { // 声明变量,stocks可保留初始值0 double stocks = 0; double investment, charges, total; // 先做交互:输出提示、读取用户输入 cout << "Cindy, how much are you investing?"; cin >> stocks; cout << endl; // 拿到用户输入的数值后,再执行所有计算 investment = stocks * 30; charges = investment * .015; total = charges + investment; // 按需输出结果即可 cout << "Investment principal: " << investment << endl; cout << "Service charge: " << charges << endl; cout << "Total amount: " << total << endl; return 0; }
内容的提问来源于stack exchange,提问作者hstief23
相关产品推荐
相关产品推荐

