#include "stdio.h"
#include "string.h"
int main() {
char s1[100];
scanf("%s", s1);
char s2[26] = {0};
int acsii;
// 清空输入缓冲区
int c;
while ((c = getchar()) != '\n' && c != EOF);
for (int i = 0; i < strlen(s1); i++) {
acsii = s1[i] - 'a';
if (acsii >= 0 && acsii < 26) { // 确保不越界
s2[acsii]++;
}
}
for (int i = 0; i < 26; i++) {
if (s2[i] != 0) {
printf("%c:%d\n", i + 97, s2[i]);//这里97指的是下表为0代表a,a的ASCII码值为97,+97使其用字符表示
}
}
return 0;
}
(大一新生的bb >-<)
核心思想:英语小写一共有26个字母。利用ACSII码,将所有的小写英文字母转化为ACSII码并且与‘a'相减7,得到字母与a在ACSII码中对应的距离,再将该距离存进某数组中。遍历存放字符的数组,每遇到相应的下标,就+1.
| |||||||||
ASCII码 |
键盘 |
ASCII码 |
键盘 |
ASCII码 |
键盘 |
ASCII码 |
键盘 | ||
27 |
ESC |
32 |
SPACE |
33 |
! |
34 |
" | ||
35 |
# |
36 |
$ |
37 |
% |
38 |
& | ||
39 |
' |
40 |
( |
41 |
) |
42 |
* | ||
43 |
+ |
44 |
' |
45 |
- |
46 |
. | ||
47 |
/ |
48 |
0 |
49 |
1 |
50 |
2 | ||
51 |
3 |
52 |
4 |
53 |
5 |
54 |
6 | ||
55 |
7 |
56 |
8 |
57 |
9 |
58 |
: | ||
59 |
; |
60 |
< |
61 |
= |
62 |
> | ||
63 |
? |
64 |
@ |
65 |
A |
66 |
B | ||
67 |
C |
68 |
D |
69 |
E |
70 |
F | ||
71 |
G |
72 |
H |
73 |
I |
74 |
J | ||
75 |
K |
76 |
L |
77 |
M |
78 |
N | ||
79 |
O |
80 |
P |
81 |
Q |
82 |
R | ||
83 |
S |
84 |
T |
85 |
U |
86 |
V | ||
87 |
W |
88 |
X |
89 |
Y |
90 |
Z | ||
91 |
[ |
92 |
\ |
93 |
] |
94 |
^ | ||
95 |
_ |
96 |
` |
97 |
a |
98 |
b | ||
99 |
c |
100 |
d |
101 |
e |
102 |
f | ||
103 |
g |
104 |
h |
105 |
i |
106 |
j | ||
107 |
k |
108 |
l |
109 |
m |
110 |
n | ||
111 |
o |
112 |
p |
113 |
q |
114 |
r | ||
115 |
s |
116 |
t |
117 |
u |
118 |
v | ||
119 |
w |
120 |
x |
121 |
y |
122 |
z | ||
123 |
{ |
124 |
| |
125 |
} |
126 |
~ | ||