用c语言编程输出一个形如AXBXC的四则运算式的结果。 例如:1+2*3、5*6+7、100-50/5。
时间: 2024-09-21 10:01:55 浏览: 57
2020高二数学 3.2一元二次不等式及其解法(3) 暑期同步练习 新人教A版必修5.doc
在C语言中,你可以通过控制台输入和基本算术运算符来构造并计算这样的四则运算表达式。这里是一个简单的示例程序,它会提示用户输入一个字符串,然后尝试解析并输出结果:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
double calculate(char *expression) {
double num1 = 0.0, num2 = 0.0;
char op = '+';
double result;
for (int i = 0; expression[i]; ++i) {
if (isdigit(expression[i])) {
num1 = num1 * 10 + (expression[i] - '0');
} else if (expression[i] == '(' || isop(expression[i])) {
continue; // skip parentheses and operators
} else {
switch (op) {
case '+':
result = num2 + num1;
num1 = result;
op = expression[i];
break;
case '-':
result = num2 - num1;
num1 = result;
op = expression[i];
break;
case '*':
num2 = num1;
num1 = 0.0;
op = expression[i];
break;
case '/':
if (num2 != 0.0)
num1 = num2 / num1;
else {
printf("Error: Division by zero.\n");
return 0;
}
op = expression[i];
break;
default:
printf("Invalid operator at position %d.\n", i);
return 0;
}
}
}
// handle final operation before closing parenthesis
switch (op) {
case '+':
result += num2;
break;
case '-':
result -= num2;
break;
case '*':
result *= num2;
break;
case '/':
if (num2 != 0.0)
result /= num2;
else
printf("Error: Division by zero after closing parenthesis.\n");
break;
}
return result;
}
// Check if character is an operator (+, -, *, /)
int isop(char c) {
return c == '+' || c == '-' || c == '*' || c == '/';
}
int main() {
char input[100];
printf("Enter a mathematical expression like A+B*C or 1+(2*3): ");
fgets(input, sizeof(input), stdin); // read user input
input[strlen(input)-1] = '\0'; // remove newline character
double result = calculate(input);
if (result != 0 && isnan(result)) {
printf("NaN (Not a Number)\n");
} else {
printf("Result: %.2f\n", result);
}
return 0;
}
```
这个程序首先定义了一个函数`calculate`来解析和计算输入的表达式。注意,此程序假设输入的表达式格式正确,没有考虑错误处理。实际应用中,你可能需要添加更多的验证来确保表达式的有效性。
阅读全文