在线编译器 C

#include <stdio.h> int main() { char c; scanf("%c", &c); int counter_digit = 0; do { if (c >= '0' && c <= '9') { counter_digit++; } } while (c != '.'); printf("%d", counter_digit); return 0; }
这段代码试图统计用户输入中数字字符('0'到'9')的个数,直到遇到句点('.')为止。但代码存在逻辑问题,导致它无法正确读取多个字符。

- 你的循环条件 `while (c != '.')` 只检查了第一次输入的字符,循环内部没有更新 `c` 的值,所以如果第一个字符不是句点,循环会无限执行。
- 你需要让程序在每次循环中读取新的字符,这样才能逐个检查输入流中的每个字符。