输入一个可能带空格字符的字符串(长度不超过200),统计其中各个英文字母的出现次数,不区分大小写。输出字母a~z的出现次数,数据间以英文逗号分隔。非英文字母不统计。 输入:可能带空格的字符串。 输出:26个整数,以英文逗号分隔。
时间: 2023-05-31 10:18:20 浏览: 159
从键盘上输入一串英文字符(不含空格与其他字符),统计每个字符的数目,并输出字母及相应的数目。
### 回答1:
这道题目是要求统计一个包含空格字符的字符串(长度不超过200)中每个英文字母出现的次数,不区分大小写。输出字母a~z的出现次数,数据间以英文逗号分隔。非英文字母不统计。
输入:包含空格字符的字符串。
输出:26个整数,以英文逗号分隔,数据间以英文逗号分隔。
### 回答2:
这道题其实就是一个简单的字符统计问题。我们需要对输入的字符串进行遍历,然后统计其中每个英文字母出现的次数,最后输出这26个字母的出现次数即可。
首先,我们需要定义一个长度为26的数组,用来存储各个英文字母出现的次数。由于题目中说不区分大小写,所以我们需要将所有字母转化为小写字母再进行统计。我们可以使用ASCII码将大写字母转化为小写字母,具体算法如下:
```c++
if(ch >= 'A' && ch <= 'Z') {
ch += 'a' - 'A';
}
```
这里需要注意,如果判断输入字符为大写字母,需要将其加上一个常数来转化为小写字母。
接下来,我们需要用一个循环对整个字符串进行遍历,统计其中各个英文字母的出现次数。具体代码如下:
```c++
// 26个字母出现次数的数组
int count[26] = {0};
// 遍历字符串
for(int i = 0; i < str.length(); i++) {
// 如果是英文字母
char ch = str[i];
if(ch >= 'A' && ch <= 'Z') {
ch += 'a' - 'A';
}
if(ch >= 'a' && ch <= 'z') {
count[ch-'a']++;
}
}
```
最后,我们只需要将每个字母的出现次数输出即可。具体代码如下:
```c++
for(int i = 0; i < 26; i++) {
printf("%d", count[i]);
if(i < 25) {
printf(", ");
}
}
```
这样就完成了整个统计字母出现次数的程序。完整代码如下:
### 回答3:
解题思路:
这道题目要求我们统计输入字符串中各个英文字符的出现次数,不区分大小写,并输出这26个英文字母的出现次数,数据之间以英文逗号分隔。为了实现这个功能,我们可以采用以下步骤:
1. 定义一个26个元素的数组a,用于统计26个英文字母的出现次数。因为题目要求不区分大小写,所以我们需要把输入字符串都转化为小写字母,这可以通过将字符减去‘A’或‘a’的ASCII码来实现。
2. 依次遍历输入字符串中的每个字符,如果其为字母,则统计出现次数。对于非英文字母,我们不进行统计。
3. 最后,我们将统计出的26个英文字母的出现次数,以英文逗号分隔输出即可。
实现代码如下:
```
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[201]; // 定义字符串
int a[26] = {0}; // 定义统计数组,初始值为0
// 输入字符串
cin.getline(str, 201);
// 遍历字符串
for (int i = 0; i < strlen(str); i++)
{
// 如果是字母,则统计出现次数
if (isalpha(str[i]))
{
char c = tolower(str[i]);
a[c - 'a']++;
}
}
// 输出结果
for (int i = 0; i < 26; i++)
{
if (i != 0)
{
cout << ",";
}
cout << a[i];
}
cout << endl;
return 0;
}
```
运行效果:
输入:Hello World!
输出:1,1,3,2,1,0,0,2,0,0,0,1,1,0,2,0,0,1,2,2,0,0,0,0,0,0
综上所述,通过定义一个26个元素的数组,遍历输入字符串,统计各个英文字母的出现次数,最终以英文逗号分隔输出即可。
阅读全文