在线编译器 C

#include <stdio.h> void print_digit_count(char number[]){ int count[10]={0}; int l=0; while(number[l]!='\0'){ l++; } for(int i=0;i<l;i++){ char c=number[i]; if(c>='0'&&c<='9'){ count[c-'0']++; } } for(int i=0;i<10;i++){ if(count[i]!=0){ printf("%d %d\n",i,count[i]); } } } int main() { //int a[5] = {1, 23, 5, 8, 6}; // 1 5 8 6 23// print_digit_count("1234"); return 0; }
这段代码定义了一个函数 `print_digit_count`,它接收一个字符串,统计其中每个数字字符('0'到'9')出现的次数,然后按数字从小到大的顺序输出出现次数不为0的数字及其次数。主函数中调用它统计了字符串 "1234"。

- 你的代码目前只统计了字符串 "1234",但题目可能要求从标准输入读取字符串。检查主函数中是否应该使用 `scanf` 或 `fgets` 来获取用户输入的字符串,而不是硬编码。
- 注意 `print_digit_count` 函数中,你手动计算了字符串长度,但 C 标准库提供了 `strlen` 函数(需要包含 `<string.h>`),可以简化代码。不过这不是必须的,只是提示。