杭电1219,Wa,求高手解答
#include<stdio.h>#include<string.h>intmain(){inti;inta[26];charb[100001];while(gets(b...
#include<stdio.h>
#include<string.h>
int main()
{
int i;
int a[26];
char b[100001];
while(gets(b))
{
for(i=0;i<26;i++)
a[i]=0;
for(i=0;b[i]!='\0';i++)
if(b[i]<='z'&&b[i]>='a')
a[b[i]-'a']++;
for(i=0;i<26;i++)
printf("%c:%d\n",'a'+i,a[i]);
printf("\n");
}
} 展开
#include<string.h>
int main()
{
int i;
int a[26];
char b[100001];
while(gets(b))
{
for(i=0;i<26;i++)
a[i]=0;
for(i=0;b[i]!='\0';i++)
if(b[i]<='z'&&b[i]>='a')
a[b[i]-'a']++;
for(i=0;i<26;i++)
printf("%c:%d\n",'a'+i,a[i]);
printf("\n");
}
} 展开
展开全部
程序中数组a有26个元素,起计数器的作用, 用来记录字符串中小写字母a至z的个数。A[0]对应字母'a', a[1]对应字母'b',余类推。从键盘读入一个字符串放入字符数组b中,然后对字符串进行扫描,凡小写英文字母计数,例如输入coffee:扫描到首字母 b[0]='c', 那么b[0]-'a'为2,接着a[b[i]-'a']++; 这句就使a[2](对应字母c的个数)加一,表示读到的是字母'c'. 这样的操作继续进行,一直到字符串结束,结束标志是'\0'.最后输出统计的结果。上例的话就是:
a: 0
b:0
c:1
d:0
e:2
f:2
.....
o:1
.....其它字母对应值 为0
a: 0
b:0
c:1
d:0
e:2
f:2
.....
o:1
.....其它字母对应值 为0
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序没大问题啊,现在有什么问题呢?是否对时间和内存使用有限制?你定义的数组b很大,其实可以单个字符扫描并统计。根据需要适当优化。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询