Online Compiler C

#include <stdio.h> int is_even_digit_sum(int n){ int sum=0; if(n==0){ return 1; } while (n>0){ sum+=n%10; n/=10; } if(sum%2==0){ return 1; }else{ return 0; } }
这段代码定义了一个函数 `is_even_digit_sum`,它接收一个整数 `n`,计算其各位数字之和,然后判断这个和是否为偶数。如果是偶数,函数返回1,否则返回0。代码中有一个特殊处理:当 `n` 为0时,直接返回1,因为0的各位数字和是0,是偶数。

- 当 `n` 为负数时,你的 `while` 循环条件 `n>0` 会直接跳过,导致函数返回0。但负数的各位数字和是否应该被考虑?比如 -12 的各位数字和是 1+2=3 还是 -1-2=-3?你需要明确负数的情况,并决定是否要处理它。
- 你的 `if(n==0)` 分支虽然正确,但可以思考一下:如果去掉这个分支,代码在 `n=0` 时会发生什么?`while` 循环不会执行,`sum` 保持为0,然后 `sum%2==0` 为真,同样返回1。所以这个分支其实是多余的,你可以考虑简化代码。