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表示每个数在字符串中出现的次数
在线等啊 展开
char number[] = "11992003747823682482932487928392";
实现如下输出:
0[2]
1[2]
2[7]
3[4]
…
9[5]
就是X[Y],其中X表示0~9九个数,Y表示每个数在字符串中出现的次数
在线等啊 展开
4个回答
展开全部
只要将字符串简单的映射到数组里进行计数就可以了,
#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;
}
#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']就可以计数。
你在纸上试着看下程序怎么运行的就知道了
展开全部
#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] );
}
#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] );
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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]);
}
更复杂的情况(例如出现小数或特别大的数)就得用链表一类的容器来解决了
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]);
}
更复杂的情况(例如出现小数或特别大的数)就得用链表一类的容器来解决了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询