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

#include <stdio.h> int main() { char c; int count_digit = 0 ; do { scanf("%c", &c); if (c >= '0' && c <= '9') { count_digit++; } } while (c != '.'); printf("%d", count_digit); return 0; }
这段代码的功能是:从输入中逐个读取字符,统计其中数字字符('0'到'9')的个数,直到遇到小数点 '.' 为止,最后输出统计结果。

- 代码中 `do-while` 循环的条件是 `c != '.'`,这意味着当读取到 '.' 时循环结束。但注意,循环体内部在判断字符是否为数字之前,已经将 '.' 读入并赋值给变量 c,因此 '.' 本身不会被计入数字。不过,循环结束后,程序会输出统计结果,这是正确的。

- 一个需要注意的地方是:`scanf("%c", &c)` 会读取包括空格、换行符在内的所有字符。如果输入中包含空格或换行符,它们也会被读取并参与循环判断。这可能导致循环提前结束或意外行为,因为 '.' 可能不是输入中的第一个非数字字符。你可以考虑是否需要跳过空白字符,或者使用其他输入方式。