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

#include <stdio.h> int main() { int n, sum = 0, digit; scanf("%d", &n); while (n > 0) { digit = n % 10; sum = sum + digit; n = n / 10; } if (sum == 10) printf("YES"); else printf("NO"); return 0; }
这段代码的功能是:读入一个整数,计算它各位数字之和,然后判断这个和是否等于10,并输出YES或NO。

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

- 当输入的数字是负数时,while循环条件`n > 0`会直接不成立,导致sum保持为0,程序会输出NO。但题目可能要求处理负数的情况,比如-123的各位数字之和应该怎么算?目前代码没有处理负号。

- 另外,如果输入的数字是0,循环也不会执行,sum为0,输出NO。但0的各位数字之和是0,不等于10,所以输出NO是正确的。