杭电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");
}
}
展开
 我来答
笃侠6A
2012-07-27 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3224万
展开全部
是不是时间问题啊,优化一下试试:
for(i=0;b[i]!='\0';i++)
if(b[i]<='z'&&b[i]>='a')
a[b[i]-'a']++;
改为(前面添加对c的定义)试试:
for(i=0;b[i]!='\0';i++)
{
c=b[i];
if(c<='z'&&c>='a')
a[c-'a']++;
}
sh...3@yahoo.com.cn
2012-07-27 · TA获得超过139个赞
知道小有建树答主
回答量:124
采纳率:0%
帮助的人:70.1万
展开全部
程序中数组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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友1fc36d4
2012-07-27 · TA获得超过3128个赞
知道大有可为答主
回答量:1497
采纳率:100%
帮助的人:1803万
展开全部
程序没大问题啊,现在有什么问题呢?是否对时间和内存使用有限制?你定义的数组b很大,其实可以单个字符扫描并统计。根据需要适当优化。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式