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

#include <stdio.h> void print_digit(char s[]) { int cnt[10] = {0}; for (int i = 0; s[i] != '\0'; i++) { if (s[i]>='0' int digit = s[i] - '0'; cnt[digit]++; } for (int i = 0; i < 10; i++) { if (cnt[i] > 0) { printf("%d %d\n", i, cnt[i]); } } } void print_digit(char s[]) { int main() { print_digit_count("1222223"); return 0; }
这段代码试图统计字符串中每个数字字符出现的次数并打印。代码中存在几个语法错误和逻辑问题。

- 在第一个 `if` 语句中,条件表达式 `s[i]>='0'` 后面缺少了右括号和 `&&` 运算符,导致语法错误。你需要正确写出判断字符是否为数字的条件。
- 代码中定义了两个同名的函数 `print_digit`,这是不允许的。第二个定义中又包含了 `main` 函数,结构混乱。你需要只保留一个函数定义,并将 `main` 函数单独放在外面。
- 在 `main` 函数中调用了 `print_digit_count`,但函数名是 `print_digit`,名称不匹配。请确保调用时使用正确的函数名。