C++,简单计算器,在同一行中按顺序输入两个数和一个符号,识别后计算结果(加减乘除余),若输入不合要求(数字数量,符号种类,除数为0),给出提示。可循环运行,按z退出
时间: 2024-09-29 11:10:03 浏览: 37
jisuanqi.zip_qt 加减乘除
5星 · 资源好评率100%
在C++中创建一个简单的命令行计算器,你可以编写如下的程序结构。首先,我们需要一个主函数`main()`,其中包含一个无限循环,直到用户输入'z'为止。我们还需要处理用户输入、检查合法性并执行相应的操作。
```cpp
#include <iostream>
#include <string>
// 函数声明用于执行运算
double calculate(double num1, double num2, char op);
int main() {
while (true) {
std::cout << "请输入两个数和一个运算符,例如:1 + 2 或者 5 / 3 (输入 z 结束): ";
std::string input;
getline(std::cin, input); // 获取用户一行输入
if (input == "z") {
break; // 用户输入 z,退出循环
}
// 分割字符串获取数值和运算符
size_t pos = input.find(' ');
double num1 = std::stod(input.substr(0, pos));
double num2 = std::stod(input.substr(pos + 1));
char op;
// 检查是否合法输入
if (pos == std::string::npos || input[pos + 1] != '+' && input[pos + 1] != '-' && input[pos + 1] != '*' && input[pos + 1] != '/') {
std::cerr << "错误的输入!请只输入数字和一个运算符。" << std::endl;
continue;
}
op = input[pos + 1];
try {
switch (op) {
case '+':
std::cout << "结果: " << calculate(num1, num2, '+') << std::endl;
break;
case '-':
std::cout << "结果: " << calculate(num1, num2, '-') << std::endl;
break;
case '*':
std::cout << "结果: " << calculate(num1, num2, '*') << std::endl;
break;
case '/':
if (num2 == 0)
throw "除数不能为零";
else
std::cout << "结果: " << calculate(num1, num2, '/') << std::endl;
break;
default:
std::cerr << "无效的运算符!" << std::endl;
break;
}
} catch (const char* error_msg) {
std::cerr << error_msg << std::endl;
}
}
return 0;
}
// 实现计算函数
double calculate(double num1, double num2, char op) {
switch (op) {
case '+': return num1 + num2;
case '-': return num1 - num2;
case '*': return num1 * num2;
case '/': return num1 / num2;
default: throw "未知运算符!";
}
}
```
这个程序会提示用户输入,解析输入内容,执行计算并显示结果。如果遇到非法输入或者错误情况,它会捕获异常并给出相应的提示。
阅读全文