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

#include <stdio.h> int is_even_digit_sum(int n){ int sum=0, result; while(n>0){ sum=sum+n%10; n=n/10; } result=sum%2; if(result==0){ return 1; }else{ return 0; } } int main() { int x; scanf("%d", &x); printf("%d",is_even_digit_sum(x)); return 0; }
这段代码定义了一个函数 `is_even_digit_sum`,它计算一个整数的各位数字之和,然后判断这个和是否为偶数。如果是偶数,函数返回1,否则返回0。主程序从用户输入读取一个整数,并打印这个函数的返回值。

- 你的代码逻辑是正确的,但有一个潜在问题:当输入为负数时,`while(n>0)` 循环不会执行,函数会返回0(表示奇数)。你需要考虑是否要处理负数的情况,比如取绝对值后再计算。
- 另外,函数名 `is_even_digit_sum` 可能让人误解为“数字和是否为偶数”,但实际返回的是1或0,这在C语言中作为布尔值使用是可行的。你可以考虑让函数直接返回 `sum%2==0` 这样的布尔表达式,使代码更简洁。