计算器是近代人发明的可以进行数字运算的机器。
也就是说,计算器不等同于算盘,前者能自行运算,后者只能简便计算过程,在古代,人们发明了许多计算工具,如算筹、算盘、计算尺等,随着社会的发展和科技的进步,计算工具也经历了由简单到复杂,由低级向高级的发展变化。进入20世纪后,人们发明了计算器。计算器的出现解决了很多比较复杂的计算问题。计算器的使用非常简单,它的运算规则是从左往右算,输入数据后可以一眨眼就得出结果。
计算器不局限与四则运算,还可以进行如开方,对数,三角函数之类的复杂运算,更有甚者,可以进行、、之类,或矩阵运算了。
今天,让我们来用C++编写简易计算器。
?
下面是一个简单的C++计算器程序,它可以处理基本的加减乘除、平方和立方运算,并支持整数和浮点数。
#include <iostream>
#include <cmath>
using namespace std;
int main() {
char op;
double num1, num2, result;
cout << "请输入操作符(+, -, *, /, ^, v): ";
cin >> op;
cout << "请输入两个数字: ";
cin >> num1 >> num2;
switch (op) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
cout << "除数不能为0!" << endl;
return 1; // 返回非零值以终止程序
}
break;
case '^': // 计算平方或立方,取决于第二个字符
if (cin.get() == '^') { // 如果是'v',则计算立方
result = pow(num1, 3);
} else { // 否则,计算平方
result = pow(num1, 2);
}
cin.ignore(); // 忽略输入流中的换行符或其他字符
break;
default: // 如果输入了无效的运算符,则退出程序
cout << "无效的运算符!" << endl;
return 1; // 返回非零值以终止程序
}
cout << "结果是: " << result << endl;
return 0; // 返回0以表示程序正常结束
}
注意,这个程序没有进行错误处理,例如检查用户是否输入了有效的数字或运算符。在实际应用中,你可能需要添加更多的错误处理代码。
#include <iostream>
#include <cmath>
#include <stdexcept> // 引入异常处理头文件
using namespace std;
int main() {
char op;
double num1, num2;
try { // 使用 try-catch 块来捕获异常
cout << "请输入操作符(+, -, *, /, ^, v): ";
cin >> op;
cout << "请输入两个数字: ";
cin >> num1 >> num2;
switch (op) {
case '+':
cout << "结果是: " << num1 + num2 << endl;
break;
case '-':
cout << "结果是: " << num1 - num2 << endl;
break;
case '*':
cout << "结果是: " << num1 * num2 << endl;
break;
case '/':
if (num2 == 0) {
throw runtime_error("除数不能为0!"); // 抛出异常,终止程序
} else {
cout << "结果是: " << num1 / num2 << endl;
}
break;
case '^': // 计算平方或立方,取决于第二个字符
if (cin.get() == '^') { // 如果是'v',则计算立方
cout << "结果是: " << pow(num1, 3) << endl;
} else { // 否则,计算平方
cout << "结果是: " << pow(num1, 2) << endl;
}
cin.ignore(); // 忽略输入流中的换行符或其他字符
break;
default: // 如果输入了无效的运算符,则抛出异常,终止程序
throw runtime_error("无效的运算符!");
}
} catch (runtime_error& e) { // 捕获 runtime_error 异常并输出错误信息
cerr << e.what() << endl; // 输出错误信息到标准错误流(cerr)
return 1; // 返回非零值以终止程序
} catch (...) { // 捕获其他未知异常并输出通用错误信息
cerr << "发生未知异常!" << endl; // 输出通用错误信息到标准错误流(cerr)
return 1; // 返回非零值以终止程序
}
return 0; // 返回0以表示程序正常结束
}
?在改进后的版本中,我们使用了 try-catch 块来捕获异常。当遇到除数为0的情况或输入无效的运算符时,我们使用?throw
?语句抛出异常。在 catch 块中,我们捕获?runtime_error
?异常并输出错误信息到标准错误流(cerr
),然后返回非零值以终止程序。我们还添加了一个通用的 catch 块来捕获其他未知异常。
最后,按照提示运行就可以啦~