在线编译器 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=n%2==0) e++; if (last=n%2==1) 0++; n /= 10; } printf("%d %d", e ,o); return 0; }
这段代码试图统计一个整数中各位数字里偶数和奇数的个数,但存在几个关键错误。

- 第12行和第14行的条件判断中,你使用了赋值运算符 `=` 而不是比较运算符 `==`,这会导致逻辑错误。`last=n%2==0` 实际上是把比较结果(0或1)赋值给 `last`,而不是检查 `last` 是否为偶数。
- 第14行中 `0++` 是一个笔误,应该是 `o++`,变量名是 `o` 而不是数字0。
- 变量 `last` 存储的是最后一位数字,但判断奇偶时应该基于 `last` 本身,而不是重新计算 `n%2`。

- 检查第12行和第14行,把 `=` 改为 `==`,并确保判断的是 `last` 的值。
- 将第14行的 `0++` 改为 `o++`。