C语言运算结果不符预期?常见问题及解决方法
在你提供的代码中,存在一些问题导致运行结果不符合预期。
首先,你在读取操作符的时候使用了scanf('%d%d%c', &num1, &num2, &op),这会导致换行符或空格被读入到op变量中。因此,你需要修改为scanf('%d%d %c', &num1, &num2, &op),在%c前添加一个空格,以消耗掉换行符或空格。
其次,你没有考虑到输入的操作符可能不是有效的运算符(即不是'+', '-', '*', '/'之一)。在这种情况下,代码没有进行任何操作,结果变量res的值没有被赋值。为了处理这种情况,你可以在最后添加一个else语句,输出一个错误提示,例如printf('Invalid operator\n');。
最后,你在输出结果时没有换行符,可以在printf语句末尾添加一个换行符,例如printf('%d\n', res);。
修正后的代码如下所示:
#include <stdio.h>
int main() {
int num1 = 0, num2 = 0, res = 0;
char op = ' ';
scanf('%d%d %c', &num1, &num2, &op);
if (op == '+') {
res = num1 + num2;
} else if (op == '-') {
res = num1 - num2;
} else if (op == '*') {
res = num1 * num2;
} else if (op == '/') {
if (num2 == 0) {
printf('Divisor cannot be 0\n');
} else {
res = num1 / num2;
}
} else {
printf('Invalid operator\n');
}
printf('%d\n', res);
return 0;
}
请注意,以上修正仅针对你提供的代码,假设输入是合法且符合要求的。如果需要进行更复杂的错误处理或边界检查,可能需要额外的代码。
原文地址: https://www.cveoy.top/t/topic/pU4 著作权归作者所有。请勿转载和采集!