实现从键盘输入诸如 35+62的算术运算(除+-*/外的输入均为非法输入),要求输出结果。
时间: 2024-05-08 12:15:08 浏览: 9
这个问题可以通过以下步骤来解决:
1. 从键盘读取输入的字符串。
2. 将字符串拆分成两个数字和一个算术运算符号。
3. 根据算术运算符号对两个数字进行相应的计算。
4. 输出计算结果。
下面是一个示例代码:
```python
# 从键盘读取输入的字符串
input_str = input("请输入算术运算表达式(如 35 + 62): ")
# 将字符串拆分成两个数字和一个算术运算符号
try:
num1, op, num2 = input_str.split()
num1 = int(num1)
num2 = int(num2)
except:
print("输入错误!")
exit()
# 根据算术运算符号对两个数字进行相应的计算
if op == '+':
result = num1 + num2
elif op == '-':
result = num1 - num2
elif op == '*':
result = num1 * num2
elif op == '/':
result = num1 / num2
else:
print("输入错误!")
exit()
# 输出计算结果
print("结果为:", result)
```
这段代码先读取用户输入的字符串,然后使用split()函数将其拆分成两个数字和一个算术运算符号。接下来,根据算术运算符号对两个数字进行相应的计算,并输出计算结果。如果用户输入的不是合法的算术运算表达式,则输出错误信息。
相关问题
以下程序实现从键盘输入诸如 35+62的算术运算(除+-*/外的输入均为非法输入),要求输出结果。
这里提供一个Python的实现:
```python
while True:
s = input("请输入一个算术运算:")
if s == 'exit':
break
try:
a, op, b = s.split()
a, b = float(a), float(b)
if op == '+':
print(a + b)
elif op == '-':
print(a - b)
elif op == '*':
print(a * b)
elif op == '/':
print(a / b)
else:
print("非法输入!")
except:
print("非法输入!")
```
在这个程序中,我们使用了一个while循环,不断读入用户的输入。如果用户输入了exit,则跳出循环,程序结束;否则,我们尝试将用户输入的字符串按空格分割,并将分割后的三个部分转换为浮点数(如果转换失败则说明用户输入的不是合法的算术运算)。如果运算符是+、-、*、/中的一个,则进行相应的运算并输出结果;否则,输出“非法输入!”提示用户输入有误。如果在上面的过程中出现了异常(比如用户输入了非法的字符串,或者分割后的部分不足三个),则同样输出“非法输入!”提示用户输入有误。
递归实现表达式运算(c语言)+-*/%
递归实现表达式运算需要考虑一个算术表达式的各个元素以及运算符的优先级。下面是一个用C语言实现加减乘除模取模的递归解法的示例代码:
```c
#include <stdio.h>
int calculate(char *exp, int start);
int parseNumber(char *exp, int *start) {
int num = 0;
while (exp[*start] >= '0' && exp[*start] <= '9') {
num = num * 10 + (exp[*start] - '0');
(*start)++;
}
return num;
}
int calculate(char *exp, int start) {
int num1 = parseNumber(exp, &start);
while (exp[start] != '\0' && exp[start] != ')') {
char op = exp[start++];
int num2 = parseNumber(exp, &start);
switch (op) {
case '+':
num1 += num2;
break;
case '-':
num1 -= num2;
break;
case '*':
num1 *= num2;
break;
case '/':
num1 /= num2;
break;
case '%':
num1 %= num2;
break;
default:
printf("Invalid operator\n");
return -1;
}
}
return num1;
}
int main() {
char expression[100];
printf("请输入要计算的表达式:");
scanf("%s", expression);
int result = calculate(expression, 0);
printf("计算结果为:%d\n", result);
return 0;
}
```
以上代码中,函数`parseNumber`用于解析一个数值。函数`calculate`用于递归计算表达式,包括优先级高的乘除取模和优先级低的加减。在主函数中,用户输入一个表达式,然后调用`calculate`函数进行计算,并输出结果。
这个递归实现表达式运算的方法可以解析加减乘除取模运算,并且支持嵌套括号。但需要注意的是,这个实现有一些限制,例如不支持负数和浮点数的运算。如果需要更复杂的功能,可能需要更复杂的实现。