1.忽略大小写。
2.遇到任一非字母字符,结束统计。
#include <stdio.h>
#include <string.h>
//判断是否属于字母
int checkC(char c) {
if(c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
return 1;
return 0; }
//获取统计数组的下标值,用输入的字符减掉头字母,得到对应字母顺序的下标 //a-0,b-1,c-2,...
int getF(char c) {
if(c >= 'a' && c <= 'z') {
return (int)(c-'a');
} else if(c >= 'A' && c <= 'Z') {
return (int)(c-'A'); }
}
//统计一个字符串中的单个字符数目,并输出
void totalC(char *c) {
int i = 0;
int num[26] = {0};
int f; //A 65 a 97
while(checkC(c[i])) {
f = getF(c[i]);
num[f]++;
//printf("%c:%d\n", c[i], (num[f]));
i++;
}
for(i = 0;i < 26;i++) {
if(i % 10 == 0)
printf("\n");
printf("%c: %d ",(char)(i+65),num[i]);
}
printf("\n");
}
int main(void) {
char str[1024];
int i = 0;
printf("input:\n");
while((str[i++]=getchar()) != '\n');
totalC(str);
return 0;
}
原创:转载请注明出处。