Онлайн компилятор 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; }
这段代码试图统计字符串中每个数字字符出现的次数,但存在逻辑错误。函数 `print_digit` 在遍历字符串的同时,每次遇到数字字符都会立即输出所有非零计数,导致输出混乱且重复。

- 注意循环嵌套:外层 `for` 循环遍历字符串时,内层 `for` 循环不应该放在同一个大括号内。内层循环应该在外层循环结束后单独执行,否则每次遇到数字都会输出一次当前统计结果。
- 检查 `main` 函数:目前 `main` 只打印了 "Hello, World!",并没有调用 `print_digit` 函数来测试其功能。你需要添加一个测试用的字符串并调用该函数。