c语言 随机输入一个字符串,统计该串中每个数字字符(0,1,2,3,4,5,6,7, 8,9)出现的次数。

考虑:(1)用num[0]来统计字符0的个数,用num[1]来统计字符1的个数......用num[9]来统计字符9的个数。(2)如何实现一个字符串的输入。... 考虑:
(1)用num[0]来统计字符0的个数,用num[1]来统计字符1的个数......用num[9]来统计字符9的个数。
(2)如何实现一个字符串的输入。
展开
 我来答
985967518
推荐于2017-09-06 · 知道合伙人教育行家
985967518
知道合伙人教育行家
采纳数:18027 获赞数:109865
14年本科毕业于河南理工大学,至今就读于河南理工大学攻读硕士学位,从事编程学习已有5年。

向TA提问 私信TA
展开全部

思路:统计字符串中每个数字字符出现的个数可以先定义一个整数数组a大小是10,依次保存0-9字符出现个数,遍历字符串,判断该字符是否是数字字符,如果是对应的数组元素自加1。

参考代码:

#include<stdio.h>
#include<string.h>
int main()

char a[100];
int i,n,num[10];
gets(a);
n=strlen(a);
for(i=0;i<10;i++){
num[i]=0;
}
for(i=0;i<n;i++)
if(a[i]>='0'&&a[i]<='9')
num[a[i]-'0']++;
for(i=0;i<10;i++)
printf("%d ",num[i]);
    return 0;
}
/*
输出:
ads51df0a3df9d87f89ads4fd0f3adsf21sdf47d89f9adsf65as1d2f3asd
2 3 2 3 2 2 1 2 3 4
*/
笃侠6A
推荐于2017-10-03 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3254万
展开全部
#include<stdio.h>
int main(){
int i,num[10]={0};
char c,s[100];
gets(s);
for(i=0; s[i]; i++){
c=s[i];
if(c>='0' && c<='9')
num[c-48]++;
}
for(i=0; i<10; i++)
printf("%d:\t%d\n",i,num[i]);
}
追问
num[c-48]++;
printf("%d:\t%d\n",i,num[i]);
这两个看不懂
追答
'0'的ASCII码为48,'1'为49,……,因此,'0'-48=0, '1'-48=1, ...,'9'-48=9。
c是char型,存放的是字符'0'~'9'的ASCII码,所以num[c-48]++;,当c='0'时,相当于num[0]++;,当c='1'时,相当于num[1]++;,……。
,
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hx269988653
2011-12-03 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:63.3万
展开全部
gets(ch)
for(i=0;ch(i)!='\n';i++)
if (ch[i]='0')
num[0]++;
if (ch[I]='1')
num[1]++;
就像这样输下去 最后printf num[0-9]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ng01
2011-12-03 · TA获得超过258个赞
知道小有建树答主
回答量:242
采纳率:0%
帮助的人:98.8万
展开全部
#include<stdio.h>

int main(){

char ch;
int num[10]={0},i=0;

do{
ch = getchar();
switch(ch){
case '0':num[0]++;break;
case '1':num[1]++;break;
case '2':num[2]++;break;
case '3':num[3]++;break;
case '4':num[4]++;break;
case '5':num[5]++;break;
case '6':num[6]++;break;
case '7':num[7]++;break;
case '8':num[8]++;break;
case '9':num[9]++;break;
}
} while( ch != '\n' ) ;
while(i<10)
printf( "\nnum[%d]==>%d\n",i++, num[i] );

return 0;
}

字符串输入
char c[100];
scanf("%s",c);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Tidus_forever
2011-12-03 · TA获得超过4399个赞
知道大有可为答主
回答量:2782
采纳率:100%
帮助的人:1847万
展开全部
#include <stdio.h>
int main()
{
char a[100];
int num[10]={0};
int i=0;
scanf("%s",a);
while(a[i]!='\0')
{
if(a[i]>'0' && a[i]<'9')
num[a[i]-'0']++;
i++;
}
for(i=0;i<10;i++)
printf("%d的个数为%d\n",i,a[i]);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式