C语言,输入三个数,找最大值,但是运行后显示的却是最小值

输入三个值,找出最大值,但是0个error,最后得到的却是最小值。

img

img

输入的时候1,2,3改成1 2 3,用空格隔开

原因:输入时的格式问题

分析:输入时,scanf_s 误将 , 读取为数字,导致比较错误

解决方法一

  • 格式化输入时加入 , 控制读取
    scanf_s("%d,%d,%d", &a, &b, &c);    //方法一:输入时带 , 号
    
    输入 1,2,3
    结果:

img


解决方法二

  • 格式化输入时,加上 区分,同时输入时不再输入 , 而是输入 分隔
    scanf_s("%d %d %d", &a, &b, &c);    //方法二:输入时以空格区分
    
    输入 1 2 3
    结果:

img


完整代码

#include <stdio.h>

int main()
{
    int a, b, c;
    printf("Input a b c:\n");
    scanf_s("%d,%d,%d", &a, &b, &c);    //方法一:输入时带 , 号
    //scanf_s("%d %d %d", &a, &b, &c);    //方法二:输入时以空格区分

    //scanf("%d %d %d", &a, &b, &c);    //推荐使用 scanf
    if (a > b)
    {
        if (a > c)
            printf("max:%d\n", a);
        else
            printf("max:%d\n", c);
    }
    else
    {
        if(b > c)
            printf("max:%d\n", b);
        else
            printf("max:%d\n", c);
    }
    return 0;
}

补充

推荐题主使用 scanf 而非 scanf_s

关于如何避免使用 scanf 报错可以参考这篇文章《C4996 “scanf“ 问题——初学者使用VS的拦路虎》

最后祝题主顺利解决问题!