Online Compiler C

#include <stdio.h> void print_digit_count(char number[]) { int cnt[10] = {0}; while (number > 0) { double d = number % 10; cnt[d]++; number = number / 10; } for (int i = 0; i < 10; i++) { if (cnt[i] > 0) { printf("%d %d\n", i, cnt[i]); } } }
这段代码试图统计一个数字字符串中每个数字出现的次数,但存在几个关键问题。

首先,函数参数 `char number[]` 是一个字符数组(字符串),但在代码中却把它当作整数来使用,比如 `number % 10` 和 `number / 10`。字符数组不能直接进行算术运算。

- 你需要从字符数组中逐个取出字符,每个字符代表一个数字,比如 `'5'` 代表数字5。字符和数字之间可以通过减去 `'0'` 来转换。
- 循环遍历字符串时,应该检查字符串是否结束(遇到 `'\0'`),而不是用 `number > 0` 这种条件。