当然!下面是关于\"C语言统计输入字符各个字母出现频率的解题思路\"的完整攻略:
C语言统计输入字符各个字母出现频率的解题思路
... 示例1:使用数组统计字母频率
#include <stdio.h>
int main() {
char str[100];
int count[26] = {0}; // 初始化计数数组
printf(\"请输入一个字符串:\");
fgets(str, sizeof(str), stdin);
for (int i = 0; str[i] != '\\0'; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
count[str[i] - 'a']++;
} else if (str[i] >= 'A' && str[i] <= 'Z') {
count[str[i] - 'A']++;
}
}
for (int i = 0; i < 26; i++) {
if (count[i] > 0) {
printf(\"%c 出现的次数为 %d\
\", 'a' + i, count[i]);
}
}
return 0;
}
在这个示例中,我们首先定义了一个字符数组str
来存储输入的字符串,以及一个整型数组count
来统计字母出现的频率。然后,我们使用fgets
函数从标准输入中获取字符串。接下来,我们使用一个循环遍历字符串中的每个字符,如果字符是小写字母,则将对应的计数数组元素加1;如果字符是大写字母,则同样将对应的计数数组元素加1。最后,我们再次使用循环遍历计数数组,打印出每个字母出现的次数。
... 示例2:使用哈希表统计字母频率
#include <stdio.h>
#include <stdlib.h>
struct Node {
char letter;
int count;
struct Node* next;
};
int main() {
char str[100];
struct Node* hashTable[26] = {NULL}; // 初始化哈希表
printf(\"请输入一个字符串:\");
fgets(str, sizeof(str), stdin);
for (int i = 0; str[i] != '\\0'; i++) {
if (str[i] >= 'a' && str[i] <= 'z') {
int index = str[i] - 'a';
struct Node* node = hashTable[index];
while (node != NULL) {
if (node->letter == str[i]) {
node->count++;
break;
}
node = node->next;
}
if (node == NULL) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->letter = str[i];
newNode->count = 1;
newNode->next = hashTable[index];
hashTable[index] = newNode;
}
} else if (str[i] >= 'A' && str[i] <= 'Z') {
int index = str[i] - 'A';
struct Node* node = hashTable[index];
while (node != NULL) {
if (node->letter == str[i]) {
node->count++;
break;
}
node = node->next;
}
if (node == NULL) {
struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->letter = str[i];
newNode->count = 1;
newNode->next = hashTable[index];
hashTable[index] = newNode;
}
}
}
for (int i = 0; i < 26; i++) {
struct Node* node = hashTable[i];
while (node != NULL) {
printf(\"%c 出现的次数为 %d\
\", node->letter, node->count);
node = node->next;
}
}
return 0;
}
在这个示例中,我们首先定义了一个结构体Node
来表示哈希表中的节点,包含字母和出现次数。然后,我们定义了一个指针数组hashTable
来作为哈希表,初始化为NULL。接下来,我们使用fgets
函数从标准输入中获取字符串。然后,我们使用一个循环遍历字符串中的每个字符,如果字符是小写字母,则根据哈希函数计算出对应的索引,然后遍历哈希表中的链表,如果找到相同的字母,则将对应的计数加1;如果没有找到相同的字母,则创建一个新的节点,并将其插入到链表的头部。如果字符是大写字母,同样进行相同的操作。最后,我们再次使用循环遍历哈希表,打印出每个字母出现的次数。
希望这个攻略对你有所帮助!如果你还有其他问题,请随时提问。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言统计输入字符各个字母出现频率的解题思路 - Python技术站