在线编译器 C

#include <stdio.h> int main() { int n; if (scanf("%d", &n) == 1) { if (n == 0) { printf("1 0\n"); return 0; } int min = 0; int max = 0; while (n > 0) { int digit = n % 10; if (digit %2==0) { min++; }else{ max ++; } n /= 10; } printf("%d %d\n", min, max); } return 0; }
这段代码的功能是:读入一个整数,然后统计这个整数中偶数数字和奇数数字的个数,并输出。但代码中变量命名容易引起误解,`min` 实际统计的是偶数个数,`max` 统计的是奇数个数。

- 变量 `min` 和 `max` 的名字容易让人误以为是在找最小值和最大值,但实际上它们分别统计偶数和奇数的个数。建议使用更直观的变量名,比如 `even_count` 和 `odd_count`。
- 当输入的数字是0时,代码直接输出 `1 0`,但按照统计逻辑,0本身是偶数,所以偶数个数应为1,奇数个数为0,这个处理是正确的。不过要注意,如果输入的数字是负数,循环条件 `n > 0` 会导致循环不执行,从而输出 `0 0`,但负数中的数字符号通常不被考虑,你需要思考是否要处理负数的情况。