2. 从键盘输入一个不包括空格的仅由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率(出现的次数),不区分大小写。最后按使用频率从大到小的顺序输出字母(小写字母)及其使用频率,没有出现的字母不输出。
时间: 2023-05-25 16:06:06 浏览: 166
示例:
输入:helloWorld
输出:
l 3
o 2
e 1
h 1
r 1
w 1
d 1
输入格式:
一个不包括空格的仅由英文字母组成的字符串,长度不超过200个字符。
输出格式:
按使用频率从大到小的顺序输出字母(小写字母)及其使用频率,每行一个字母及其使用频率,格式为“字母 频率”。
输入样例:
helloWorld
输出样例:
l 3
o 2
e 1
h 1
r 1
w 1
d 1
提示:
该题目是Python偏难题,Java中难易程度中等。
相关问题
c++2. 从键盘输入一个不包括空格的仅由英文字母组成的字符串,长度不超过200个字符。统计26个英文字母的使用频率(出现的次数),不区分大小写。最后按使用频率从大到小的顺序输出字母(小写字母)及其使用频率,没有出现的字母不输出。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
char str[201];
int freq[26] = {0}; // 存储每个字母的使用频率,初始值为0
cin >> str;
int len = strlen(str);
for (int i = 0; i < len; i++)
{
if (str[i] >= 'a' && str[i] <= 'z') // 统计小写字母的使用频率
freq[str[i] - 'a']++;
else if (str[i] >= 'A' && str[i] <= 'Z') // 统计大写字母的使用频率
freq[str[i] - 'A']++;
}
int count = 0;
for (int i = 0; i < 26; i++)
{
if (freq[i] > 0) // 如果该字母出现过,则输出字母及其使用频率
{
cout << (char)(i + 'a') << ":" << freq[i] << endl;
count++;
}
}
if (count == 0) // 如果所有字母都没有出现过,则输出"None"
cout << "None" << endl;
else // 否则按使用频率从大到小排序输出
{
int maxFreq = 0;
for (int i = 0; i < 26; i++)
maxFreq = max(maxFreq, freq[i]);
while (maxFreq > 0)
{
for (int i = 0; i < 26; i++)
{
if (freq[i] == maxFreq)
cout << (char)(i + 'a') << ":" << freq[i] << endl;
}
maxFreq--;
}
}
return 0;
}
用C语言.从键盘输入字符串(无空格、制表符等,长度小于20), 对其中的英文字母进行大小写转换并输出;若输入非英文字母,则输出error
可以使用ctype.h库中的函数来判断输入的字符是否为英文字母,并使用条件语句来进行大小写转换。
以下是示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[20];
printf("请输入字符串:");
scanf("%s", str);
for (int i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) { // 如果是英文字母
if (islower(str[i])) { // 如果是小写字母
putchar(toupper(str[i])); // 转换为大写字母并输出
} else { // 否则是大写字母
putchar(tolower(str[i])); // 转换为小写字母并输出
}
} else { // 如果不是英文字母
printf("error");
return 0;
}
}
return 0;
}
```
注意,上面的代码中使用`isalpha()`函数判断字符是否为英文字母,它只能判断ASCII码表中的字母,如果输入的是其他语言的字母或符号,可能会出现错误。
阅读全文