你可以将以下代码添加到现有代码中,以支持小数运算:
#include <string.h>
bool isDecimal(char character) {
return (character == '.');
}
// 修改 isOperand 函数
bool isOperand(char character) {
return isdigit(character) || isDecimal(character);
}
float convertToFloat(char num[]) {
int i = 0;
float result = 0.0;
float fraction = 1.0;
bool isFractionalPart = false;
while (num[i] != '\0') {
if (isdigit(num[i])) {
if (!isFractionalPart) {
result = result * 10 + (num[i] - '0');
} else {
fraction *= 0.1;
result += fraction * (num[i] - '0');
}
} else if (isDecimal(num[i])) {
isFractionalPart = true;
}
i++;
}
return result;
}
然后,在evaluateExpression
函数中的操作数处理部分修改为:
else if (isOperand(expression[i])) {
char num[MAX_SIZE];
int j = 0;
while (isdigit(expression[i]) || isDecimal(expression[i])) {
num[j++] = expression[i++];
}
num[j] = '\0';
float operand = convertToFloat(num);
push(&operandStack, operand);
i--;
}
这样就可以在输入的表达式中进行小数运算了。请注意,输入的小数必须符合正确的格式,如 2.5
或 3.
等。
内容由零声教学AI助手提供,问题来源于学员提问