要求

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
题目描述:
从键盘输入一行或几行字符串,行数由键盘输入,一行字符串用字符数组存储。请统计所输入的字符串中26个字母(不区分大小写)出现的次数,并将出现次数非零的字母统计结果输出到屏幕上,格式参见样例。如果没有字母,请输出字符串中无字母。

输入样例:
在这里给出一组输入。例如:
1
I come quickly !
结尾无空行

输出样例:
在这里给出相应的输出。例如:
c:2
e:1
i:2
k:1
l:1
m:1
o:1
q:1
u:1
y:1
结尾无空行

输入样例:
在这里给出一组输入。例如:
1
1
结尾无空行

输出样例:
在这里给出相应的输出。例如:
字符串中无字母。
结尾无空行

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include<iostream>
using namespace std;
int main(){

int n;
cin >> n;

int count1[26] = { 0 };

for (int k = 0; k <= n; k++){ //为什么会有等号呢,将你输入行数后换行的回车吸收掉
char buffer[100];
cin.getline(buffer, 100, '\n');
for (int i = 0; buffer[i] != '\0'; i++){
if (buffer[i] >= 'a' && buffer[i] <= 'z')
count1[buffer[i] - 'a']++;
if (buffer[i] >= 'A' && buffer[i] <= 'Z')
count1[buffer[i] - 'A']++;
}
}

int count2[26];
int count3 = 0;

for (int i = 0; i < 26; i++){
if (count1[i] != 0){
count2[count3] = i;
count3++;
}
}

if (!count3)
cout << "字符串中无字母。";
else{
for (int i = 0; i < count3 - 1; i++)
cout << char('a' + count2[i]) << ":" << count1[count2[i]] << endl;
cout << char('a' + count2[count3 - 1]) << ":" << count1[count2[count3 - 1]];
}

return 0;
}