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

#include <stdio.h> int main() { char ch; int count = 0; while ((ch = getchar()) &&ch != '.') { if (ch >= '0' && ch <= '9') { count++; } } printf("%d\n", count); return 0; }
这段代码的功能是从标准输入读取字符,直到遇到句点(.)为止,并统计其中数字字符('0'到'9')的个数,最后输出这个个数。

代码中存在一个潜在问题:`getchar()` 返回的是 `int` 类型,但这里用 `char` 类型变量 `ch` 来接收。当输入某些特殊字符(比如EOF)时,`char` 可能无法正确表示返回值,导致判断条件出错。

- 考虑将 `ch` 的类型改为 `int`,以正确接收 `getchar()` 的所有可能返回值。
- 注意循环条件中 `&&ch != '.'` 的写法,确保逻辑运算符的优先级符合预期,当前写法是可行的,但可以思考是否更清晰。