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

#include <stdio.h> int main() { int n; scanf("%d", &n); int e=0,o=0; if(n==0){ e=1; } else{ while (n > 0) { int last = n % 10; if (last%2==0) e++; if (last%2==1) o++; n /= 10; } } printf("%d %d", e ,o); return 0; }
这段代码的功能是:读入一个整数,然后统计这个整数中各位数字里偶数和奇数的个数,最后输出这两个数字。

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

- 当输入的数字是0时,你单独处理了,让偶数个数为1,这是合理的。但注意,如果输入的是负数,比如-123,你的while循环条件 `n > 0` 会导致循环不执行,从而输出0 0,这不符合预期。负数各位数字的奇偶性也应该被统计。

- 对于负数,可以考虑先取绝对值再处理,或者调整循环条件使其也能处理负数。