统计一个字符串中各个字符的数量

#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

~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值