在你提供的代码中,存在一些问题导致运行结果不符合预期。

首先,你在读取操作符的时候使用了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;
}

请注意,以上修正仅针对你提供的代码,假设输入是合法且符合要求的。如果需要进行更复杂的错误处理或边界检查,可能需要额外的代码。

C语言运算结果不符预期?常见问题及解决方法

原文地址: https://www.cveoy.top/t/topic/pU4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录