输出不知道哪里出了问题等于110%时还输出OK呢

img


这个结果什么情况?110明明=100*1.1,怎么会输出OK呢?

if(a <(int)( 1.1 * b))

【以下回答由 GPT 生成】

根据您提供的代码,我在第6行发现了可能导致输出结果不正确的问题。您使用了scanf_s函数来获取用户输入的值,但是在该函数中使用了%d来格式化输入,这将导致在输入非整数值时出现问题。

scanf_s函数属于C11标准新增的函数,提供了更安全的输入,但相应的也要求我们在参数列表中指定缓冲区的大小。因此,我建议您将scanf_s修改为scanf函数。

同时,为了更好地处理用户输入可能的错误,我们可以添加一些错误检查。以下是更改后的代码:

#include <stdio.h>

int main() {
    int a, b;
    if (scanf("%d%d", &a, &b) != 2) {
        printf("Invalid input!");
        return 1;
    }

    if (a < 1.1 * b)
        printf("OK");
    else if (a >= 1.1*b && a < 1.5*b) {
        float x = 100 * ((float)a / (float)b - 1);
        printf("Exceed %.1f%%. Ticket 200", x);
    } else {
        float x = 100 * ((float)a / (float)b - 1);
        printf("Exceed %.1f%%. License Revoked", x);
    }

    return 0;
}

通过使用scanf函数并添加错误检查,我们可以更好地处理用户输入的情况。现在,如果用户输入的不是两个整数值,程序将输出"Invalid input!"并结束运行。

希望这个解决方案能够解决您的问题!如果您有任何其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^