#include
#define
max
100
int
main()
{
char
str[max]
//
输入的字符串,最大长度是max-1,因为有一个字符串结束符
int
i
=
0,
count[52]
=
{
0
}
//
count
数组用来存储各个字母出现的次数
scanf("%s",
str)
while(str[i]
!=
'\0')
{
if
(str[i]
>=
'a'
&&
str[i]
<=
'z')
{
//
统计小写字母
count[str[i]
-
97
+
26]++
}
if
(str[i]
>=
'a'
&&
str[i]
<=
'z')
{
//
统计大写字母
count[str[i]
-
65]++
}
i++
}
for
(i
=
0
i
<
26
i++)
{
//
输出大写字母信息
if
(count[i]
!=
0)
printf("%c\t%d\n",
i
+
65,
count[i])
//
只输出不为零的数据
}
for
(i
=
26
i
<
52
i++)
{
//
输出小写字母信息
if
(count[i]
!=
0)
printf("%c\t%d\n",
i
+
97
-
26,
count[i])
}
return
0
}
可以先排序,在遍历统计。
#include <stdio.h>#include <string.h>
// 升序字符串src,然后返回
char* sort(char *src)
{
char tem, len = strlen(src)
for (int i = 0 src[i] i++)
{
for (int j = 0 j < len - i - 1 j++)
if (src[j] > src[j+1])
{
tem = src[j]
src[j] = src[j+1]
src[j+1] = tem
}
}
return src
}
int main()
{
char str[1000], ch
int i = 0, cnt
printf("input a string :")
gets(str)
sort(str) // 排序
ch = str[0]
cnt = 1
for (i = 1 str[i] i++) // 遍历统计
{
if (str[i] != ch)
{
if (cnt)
printf("%c has %d.\n", ch, cnt)
ch = str[i]
cnt = 1
}
else
cnt++
}
if (cnt)
printf("%c has %d.\n", ch, cnt)
return 0
}