#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 | ~ | ||