Онлайн компилятор C

#include <stdio.h> int main() { int a, b, c, d, max; scanf("%d", &a); b = a / 100; c = (a / 10) % 10; d = a % 10; max=b; if(c>max)max=c; if(d>max)max=d; printf("%d\n", max); return 0; }
这段代码的功能是:读入一个三位整数,然后找出它的百位、十位、个位数字中的最大值并输出。

代码整体逻辑正确,但有一个潜在问题需要注意:

- 当输入的数字不是三位数时(比如两位数或四位数),代码仍然会按三位数的方式拆分,导致结果不符合预期。例如输入 12,会被拆成百位0、十位1、个位2,输出2,但可能用户期望的是输出1和2中的最大值2,这取决于题目要求。如果题目明确要求输入是三位数,则当前代码没有问题;如果题目要求处理任意整数,则需要调整拆分方式。

- 变量 `max` 的初始化使用了 `b`,但 `b` 是百位数字,如果输入是负数,百位数字可能为负,而 `max` 初始化为负值后,后续比较可能出错。不过题目通常输入正整数,这一点可以暂时忽略。