题头的话:长按点赞可私我赠送50+本C与C++书籍电子书资源
统计指定字符个数(在本题基础上自行完成统计大写字母、数字字符等程序)
【问题描述】
输入一行含空格在内的字符,分别统计其中每个小写字母的个数,并按字母顺序输出个数不为零的小写字母及其对应的个数,每对占1行;若无小写字母则输出“None”。
【样例输入1】
6a1b2c3 D4abcdxyz
【样例输出1】
a:2
b:2
c:2
d:1
x:1
y:1
z:1
【样例说明1】
输入字符串中,小写字母a,b,c各出现2次,d,x,y,z各出现1次,其他小写字母没出现就不输出。
【样例输入2】
ABC123ABC DEF SHU.
【样例输出2】
None
【样例说明2】
输入的字符串中无小写字母。
输出结束要换行。
#include <stdio.h>
#include <string.h>
int main()
{
char a[30],b[10],d[10];
int i,j,k=0,t,x=1,c[10];
gets(a);
for(i=0;i<strlen(a);i++)
if(a[i]>='a'&&a[i]<='z')
{
b[k]=a[i];
k++;
}
if(k==0)
printf("None\n");
for(i=1;i<k;i++)
for(j=0;j<k-1;j++)
if(b[j]>b[j+1])
{
t=b[j];
b[j]=b[j+1];
b[j+1]=t;
}
j=0;
for(i=0;i<k-1;i++)
{
if(b[i]==b[i+1])
x++;
else
{
c[j]=x;
d[j]=b[i];
x=1;
j++;
}
}
t=0;
for(i=0;i<j;i++)
t+=c[i];
if(t!=k)
{
c[j]=k-t;
d[j]=b[k-1];
j++;
}
for(i=0;i<j;i++)
printf("%c:%d\n",d[i],c[i]);
return 0;
}