C语言中求数组中元素出现的次数

编写一段C语言程序,给你任意一个String表示的数:charnumber[]="11992003747823682482932487928392";实现如下输出:0[2... 编写一段C语言程序,给你任意一个String表示的数:
char number[] = "11992003747823682482932487928392";
实现如下输出:
0[2]
1[2]
2[7]
3[4]

9[5]
就是X[Y],其中X表示0~9九个数,Y表示每个数在字符串中出现的次数
在线等啊
展开
 我来答
兔子和小强
推荐于2018-02-27 · TA获得超过6946个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1424万
展开全部
只要将字符串简单的映射到数组里进行计数就可以了,
#include <stdio.h>
#include <string.h>
//
int main()
{
char number[]= "11992003747823682482932487928392"; //要计数的字符串
int i, num[10];
memset(num, 0, sizeof(int)*10); //将num初始化为0
for(i=0; number[i]; ++i) //映射,散列表
++num[number[i]-'0'];
for(i=0; i<10; ++i) //
printf("%d[%d]\n", i, num[i]);
return 0;
}
追问
能稍微在详细些么,我有些地方还是不理解
追答
就是建立映射,字符'0'映射到数组下标0,'9'映射到下标9,所以对于number[i],只要
num[ number[i] - '0']就可以计数。
你在纸上试着看下程序怎么运行的就知道了
左手烟雨
推荐于2018-09-19 · TA获得超过785个赞
知道小有建树答主
回答量:446
采纳率:100%
帮助的人:250万
展开全部
#include <stdio.h>
#include <string.h>
void main()
{
int count[10]={0}; //记录各个字符的个数
char number[] = "11992003747823682482932487928392";
int i=0;
while( number[i]!='\0' ) //判断是否遇到字符串结束符'\0'
{
switch (number[i++]) { //i++用于指向下一个字符
case '0': count[0]++; break; //字符0 的个数加1
case '1': count[1]++; break; //字符1 的个数加1
case '2': count[2]++; break;
case '3': count[3]++; break;
case '4': count[4]++; break;
case '5': count[5]++; break;
case '6': count[6]++; break;
case '7': count[7]++; break;
case '8': count[8]++; break;
case '9': count[9]++; break; //字符9 的个数加1
default: beak;
}
}
for ( i=0;i<10;i++ )
printf("%d[%d]\n" , i , count[i] );
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaixingui2012
2012-12-08 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6414万
展开全部
#include <stdio.h>
int main()
{
int num[10]={0};
char number[] = "11992003747823682482932487928392";
int i=0;
for ( i=0;number[i];i++ )
num[ number[i]-'0' ] ++ ;
for ( i=0;i<10;i++ )
printf("%d[%d]\n" , i , num[i] );
return 0;
}
追问
能稍微解释下么?我是新手,很多地方不理解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
千锋教育
2015-10-27 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
如果可能出现的数的范围有限的话,可以用数组来解决

int counter[100];//只能解决0~99范围内的整数
for(int i=0;i<sizeof(a)/sizeof(int);i++){
counter[a[i]]++;
}
for(int i=0;i<100;i++){
if(counter[i])printf("%d出现%d次\n",i,counter[i]);
}

更复杂的情况(例如出现小数或特别大的数)就得用链表一类的容器来解决了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式