在线编译器 C

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

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

- 变量 `a` 只被声明但没有初始化,而 `b` 和 `c` 被初始化为 0。虽然 `scanf` 会为 `a` 赋值,但建议养成所有变量都初始化的习惯。

- 如果输入的是负数或零,`while` 循环不会执行,程序会直接输出 `0 0`。对于负数,你可能需要先处理符号,或者考虑是否应该统计负号后的数字。