输入一行英文,统计每个出现的英文字母的个数。注意:不区分大小写。 输入 一行英文。
输入一行英文,统计每个出现的英文字母的个数。注意:不区分大小写。输入一行英文。输出按照字母顺序显示每个出现的英文字母的个数,每个整数后面有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;
}
请大神看一下我的代码错在哪里 展开
输入
一行英文。
输出
按照字母顺序显示每个出现的英文字母的个数,每个整数后面有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;
}
请大神看一下我的代码错在哪里 展开
1个回答
展开全部
逻辑就错了。
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后面都用大括号括起来。
好习惯,不要写简写,很容易错的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询