输入一行英文,统计每个出现的英文字母的个数。注意:不区分大小写。 输入 一行英文。

输入一行英文,统计每个出现的英文字母的个数。注意:不区分大小写。输入一行英文。输出按照字母顺序显示每个出现的英文字母的个数,每个整数后面有1个空格。样例输入ABCabcX... 输入一行英文,统计每个出现的英文字母的个数。注意:不区分大小写。

输入

一行英文。

输出

按照字母顺序显示每个出现的英文字母的个数,每个整数后面有1个空格。

样例输入

ABC abc XYZ Z

样例输出

2 2 2 1 1 2

提示

注意:没有出现的字母不显示个数。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int i,j,a[26]={0};
char x[100];
gets(x);
strupr(x);
i=0;
while(x[i]!='\0')
{
for(j=0;j<strlen(x);j++)
if(x[j]>='A' && x[j]<='Z') a[x[j]-65]++;
i++;
}
for(i=0;i<26;i++)
if(a[i]!=0) printf("%d ",a[i]);
system("pause");
return 0;
}
请大神看一下我的代码错在哪里
展开
 我来答
巨兔网友12138
2013-12-21 · TA获得超过628个赞
知道小有建树答主
回答量:359
采纳率:0%
帮助的人:135万
展开全部

逻辑就错了。

for(j=0;j<strlen(x);j++)这个循环没有意义啊?

你想用它来统计什么?


改成我这样吧:


		int i,j,a[26]={0};
char x[100];
gets(x);
strupr(x);
i=0;
while(x[i]!='\0')
{
//for(j=0;j<strlen(x);j++) /* 注意这句话没有用,我给注释了 */
if(x[i]>='A' && x[i]<='Z') a[x[i]-65]++; /* 这里的 j 改成 i */
i++;
}
for(i=0;i<26;i++)
if(a[i]!=0) printf("%d ",a[i]);
system("pause");
return 0;

这是我的输出:


顺便建议不要不加大括号!

我就不加了,你最好在for和if后面都用大括号括起来。

好习惯,不要写简写,很容易错的。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式