Online Compiler C

#include <stdio.h> int main() { int n; if (scanf("%d", &n) == 1) { if (n == 0) { printf("0\n"); return 0; } int rev = 0; while (n > 0) { int digit = n % 10; rev = rev * 10 + digit; n /= 10; } printf("%d\n", rev); } return 0; }
这段代码的功能是:读取一个整数,然后输出它的数字反转结果。例如输入123会输出321,输入100会输出1(因为前导零被丢弃)。

代码整体逻辑正确,但有一个边界情况需要留意。

- 当输入负数时,while循环条件`n > 0`会直接跳过,导致输出0(因为rev初始为0)。但题目可能期望负数也能反转,比如输入-123输出-321。
- 反转后的整数可能超出int类型的范围,比如输入1000000009,反转后变成9000000001,这超出了int能表示的最大值,会导致溢出。