按运算符分支计算,并优先处理除零和非法运算符。
OJ: noi_openjudge
题目 ID: ch0104-19
难度:入门
标签:模拟条件判断python
日期: 2026-07-30 23:01
题意
实现支持 +、-、*、/ 的整数计算器;除零和非法运算符有指定提示。
思路
按运算符逐个分支。除法分支先检查零除数;商使用向零截断辅助函数,以匹配 C/C++ 整数除法而不是 Python 负数 // 规则。未知运算符走最后的错误分支。
代码
Python代码
python
def trunc_divide(dividend, divisor):
quotient = abs(dividend) // abs(divisor)
return quotient if dividend * divisor >= 0 else -quotient
left_text, right_text, operator = input().split()
left, right = int(left_text), int(right_text)
if operator == "+":
print(left + right)
elif operator == "-":
print(left - right)
elif operator == "*":
print(left * right)
elif operator == "/":
print("Divided by zero!" if right == 0 else trunc_divide(left, right))
else:
print("Invalid operator!")C++代码
cpp
#include <cstdio>
int main(){
int a,b;
char c;
scanf("%d%d",&a,&b);
scanf("%c",&c);
scanf("%c",&c);
int ans ;
if( c == '*')
ans = a*b;
else if( c == '/' && b == 0){
printf("Divided by zero!");
return 0;
}
else if( c == '/')
ans = a/b;
else if (c == '+')
ans = a + b;
else if (c == '-')
ans = a - b;
else {
printf("Invalid operator!");
return 0;
}
printf("%d\n",ans);
return 0;
}复杂度
分支数固定,时间复杂度和额外空间复杂度均为
总结
模拟题先列举输入状态,再把异常状态放进独立分支,能避免非法输入落入普通计算。