知识点:1:输入字符串,%s在C语言中代表字符串型格式符。
2:输出字符,%c在C语言中代表字符型格式符。
3:输入字符串需储存在数组里,str[100],代表其大小为100。
4:c[52]:大小写字母的计数器。
5:ASCLL:A:65,B:66,剩下字母依次加一,a:97,b:98,剩下字母也依次加一。
关键步骤:大小写字母计数
while(str[i]!=0)//字母不结束
{
if(str[i]>='A'&&str[i]<='Z') c[str[i]-'A']++;//计算大写字母,
if(str[i]>='a'&&str[i]<='z') c[str[i]-'a'+26]++;//计算小写字母
i++;
}
关键步骤:输出字母的个数
for(i=0;i<26;i++)//26位字母
{
if(c[i]) printf("%c:%d",i+'A',c[i]);
if(c[i+26]) printf("%c:%d",i+'a',c[i+26]);
}
若想要大小写分开输出:(即先输出大写字母,后输出小写字母)
for(i=0;i<26;i++)
{
if(c[i]) printf("%c:%d",i+'A',c[i]);
}
for(i=0;i<26;i++)
{
if(c[i+26]) printf("%c:%d",i+'a',c[i+26]);
}
若想字母个数横着排列:
for(i=0;i<26;i++)
{
if(c[i])
{
if(m%6==0) putchar('\n');//每行6个数值
m++;
printf("%c:%d",i+'A',c[i]);
}
}
for(i=0;i<26;i++)
{
if(c[i+26])
{
if(m%6==0) putchar('\n');
m++;
printf("%c:%d",i+'a',c[i+26]);
}
}
接下来综合这些知识来写代码:(个人不喜欢规划格式)
#include<stdio.h>
#include<windows.h>
#include<string.h>
void main()
{
int i=0,c[52]={0};
char str[100];
printf("请输入字母:");
scanf("%s",str);
while(str[i]!=0)
{
if(str[i]>='A'&&str[i]<='Z') c[str[i]-'A']++;//大写字母计数
if(str[i]>='a'&&str[i]<='z') c[str[i]-'a'+26]++;//小写字母计数
i++;
}
for(i=0;i<26;i++)
{
if(c[i])
printf("%c:%-d\n",i+'A',c[i]);
if(c[i+26])
printf("%c:%-d\n",i+'a',c[i+26]);
}
}