1 条题解

  • 0
    @ 2026-10-8 21:09:25

    数字比较

    一个自然的想法

    题目问三个问题:a 是否大于 b、是否小于等于 b、是否不等于 b。最直白的写法是三个 if 分别判断,再各自输出 1 或 0:

    if (a > b) printf("1 "); else printf("0 ");
    

    这样写完全正确,但会比较啰嗦。

    突破口:比较表达式本身就是值

    在 C 语言里,a > b 这类关系表达式的计算结果就是 1 或 0——条件成立值为 1,不成立值为 0。所以比较完成后,表达式的值可以直接放进 printf 当作输出:

    printf("%d %d %d", a > b, a <= b, a != b);
    

    三行 if 立刻缩成一行。这不是炫技,而是一个会在后面反复出现的思想:条件判断和算术计算是同一件事。

    代码实现

    #include <stdio.h>
    
    int main() {
        int a, b;
        scanf("%d%d", &a, &b);
        /* 关系表达式的值就是 1/0,直接输出 */
        printf("%d %d %d", a > b, a <= b, a != b);
        return 0;
    }
    

    容易出错的细节

    1. 第二个问是"小于或等于",对应 a <= b,漏写等号会把 a == b 的情况判错。
    2. 输出用空格分隔,三个数字在同一行,别写成换行。
    3. a、b 的绝对值不超过 10000,可能取到负数——本题只做比较,不受影响,但读题时应当留意数据范围。

    复杂度

    时间与空间复杂度均为 O(1)。

    信息

    ID
    510
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    6
    已通过
    3
    上传者