在线编译器 C

#include <stdio.h> int is_even_digit_sum(int n) { int sum = 0; while (n != 0) { sum += n % 10; n = n / 10; } if (sum % 2 == 0) return 1; else return 0; } int main() { printf("%d", is_even_digit_sum(136)); return 0; }
这段代码定义了一个函数 `is_even_digit_sum`,它计算一个整数的各位数字之和,然后判断这个和是否为偶数。如果是偶数,函数返回1,否则返回0。在 `main` 函数中,它测试了数字136,并打印结果。

- 你的代码逻辑是正确的,但有一个潜在问题:如果输入负数,比如 -136,while 循环条件 `n != 0` 会成立,但取模运算 `n % 10` 在C语言中对于负数会得到负的余数,导致求和结果不正确。考虑如何处理负数的情况。
- 另外,函数返回1或0表示真假,但通常C语言中更简洁的写法是直接返回 `sum % 2 == 0` 这个条件表达式的结果,而不需要if-else语句。