在线编译器 C

#include <stdio.h> void print_digit(char s[]) { int count[10] = {0}; int i; for (i = 0; s[i] != '\0'; i++) { if (s[i] >= '0' && s[i] <= '9') count[s[i] - '0']++; for (I = 0; i < 10; i++) { if (count[i] > 0) { printf("%d %d", i, count[i]); } } } int main() { printf("Hello, World!\n"); return 0; }
这段代码试图统计字符串中每个数字字符出现的次数,但存在几个问题。

首先,代码中有一个拼写错误:在内部循环中使用了 `I` 而不是 `i`,而且这个循环被错误地放在了外层循环内部,导致每次遇到数字字符时都会输出当前统计结果。

其次,`main` 函数被错误地嵌套在了 `print_digit` 函数内部,这会导致编译错误。

- 检查变量名 `I` 是否写错了,C语言区分大小写,应该使用小写 `i`。
- 思考统计循环和输出循环的位置关系:应该先完整统计整个字符串,再统一输出结果,而不是每找到一个数字就输出一次。