C++计算器编译无错但无法选择运算的问题排查
解决C++计算器跳过运算选择的新手坑
作为刚上大学一个半月的编程新手,我试着挑战写一个没学过的C++计算器程序——编译的时候没报错,我还挺开心的,结果一运行就傻了:输入两个数字后,程序直接跳到“是否继续”的提示,根本不给我选运算的机会,更别说输出计算结果了!
折腾了好一会儿才揪出问题所在:我漏写了cin >> input;语句,而且这个语句必须放在运算选择的提示之后!
举个例子,我原来的错误代码片段大概是这样的:
double num1, num2; char input, choice; cout << "请输入第一个数字:"; cin >> num1; cout << "请输入第二个数字:"; cin >> num2; cout << "请选择运算:+、-、*、/" << endl; // 这里直接跳过了读取运算选择的步骤! cout << "是否继续?(Y/N)" << endl; cin >> choice;
程序执行到运算选择提示后,没有读取用户输入的运算符,就直接往下跑到了“是否继续”的判断环节,自然跳过了整个计算流程。
修正方法超简单,在运算选择提示后补上读取输入的语句就行:
double num1, num2; char input, choice; cout << "请输入第一个数字:"; cin >> num1; cout << "请输入第二个数字:"; cin >> num2; cout << "请选择运算:+、-、*、/" << endl; cin >> input; // 补上这行,读取用户选择的运算符 // 接下来就是根据input执行对应计算的逻辑 switch(input) { case '+': cout << "结果:" << num1 + num2 << endl; break; case '-': cout << "结果:" << num1 - num2 << endl; break; case '*': cout << "结果:" << num1 * num2 << endl; break; case '/': if(num2 != 0) { cout << "结果:" << num1 / num2 << endl; } else { cout << "错误:除数不能为0" << endl; } break; default: cout << "错误:无效的运算选择" << endl; } cout << "是否继续?(Y/N)" << endl; cin >> choice;
其实这种小疏漏对新手来说太常见了——写代码的时候光顾着想整体逻辑,忘了把“提示输入”和“读取输入”配对起来。以后写输入输出相关的代码,一定要记得每一个让用户输入的提示后面,都要有对应的读取语句哦!
内容的提问来源于stack exchange,提问作者MeltingPaint_
相关产品推荐
相关产品推荐

