1 条题解
-
0
数字比较
一个自然的想法
题目问三个问题: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; }容易出错的细节
- 第二个问是"小于或等于",对应
a <= b,漏写等号会把 a == b 的情况判错。 - 输出用空格分隔,三个数字在同一行,别写成换行。
- a、b 的绝对值不超过 10000,可能取到负数——本题只做比较,不受影响,但读题时应当留意数据范围。
复杂度
时间与空间复杂度均为 O(1)。
- 第二个问是"小于或等于",对应
- 1
信息
- ID
- 510
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 6
- 已通过
- 3
- 上传者