Online Compiler C

#include <stdio.h> int main() { int a, b, c, d; scanf("%d", &a); b = n % 10; c = n % 10; a /= 10; while (a > 0) { d = a % 10; if (d < b) b = d; if (d > c) c = d; a /= 10; } printf("%d %d", b, c); return 0; }
这段代码试图找出一个整数的各位数字中的最小值和最大值,但存在几个问题。

首先,变量 `n` 没有被定义,代码中直接使用了 `n`,但实际输入存储在了 `a` 中。其次,`b` 和 `c` 的初始值设置不正确——它们都被赋值为 `n % 10`,但 `n` 未定义,而且应该用输入的数字来初始化。

- 检查变量名:你从 `scanf` 读入到 `a`,但后面却使用了未定义的 `n`。应该用 `a` 来初始化 `b` 和 `c`。
- 思考初始值的设定:`b` 和 `c` 应该从输入数字的某一位开始,但当前代码在循环前已经修改了 `a` 的值(`a /= 10`),这会导致丢失一位数字。考虑先保存原始输入,或者调整初始化的时机。