c语言中输入两个字符串统计其相同字母各自出现的次数 在C语言中
时间: 2024-10-04 11:01:29 浏览: 25
为了在C语言中统计两个字符串中相同字母各自出现的次数,你可以采用以下几个步骤:
1. 定义函数接收两个字符串作为输入,例如 `void countSameChars(char str1[], char str2[])`。
2. 创建两个数组或变量来存储每个字符及其出现次数,比如一个大小为256(因为ASCII码有256个字符)的一维整型数组 `int count[256]`,其中0-127对应小写字母,128-255对应大写字母。
3. 遍历第一个字符串 `str1`,对于每一个字符:
- 使用ASCII值访问 `count` 数组,如果该字符已存在,则对应的计数加一。
- 如果是大写字母,需要先转换成小写字母再操作,因为ASCII值会区分大小写。
4. 对第二个字符串 `str2` 进行同样的遍历过程,但在更新计数之前检查当前字符是否已经在第一个字符串中计算过。如果是,直接加一;如果不是,从头开始比较。
5. 在遍历结束后,`count` 数组中的每个元素就代表了相应字符在两个字符串中共出现的次数。
下面是一个简单的示例代码片段:
```c
#include <stdio.h>
#include <string.h>
void countSameChars(char str1[], char str2[]) {
int count[256] = {0};
for (char* ptr = str1; *ptr != '\0'; ++ptr) {
count[*ptr]++;
if (*ptr > 'z') {
count[*ptr + ('A' - 'a')]++;
}
}
// 现在处理第二个字符串,只对未计数过的字符进行统计
for (char* ptr = str2; *ptr != '\0'; ++ptr) {
if (*ptr <= 'z' && count[*ptr] == 0) {
count[*ptr]++;
} else if (*ptr > 'z' && count[*ptr + ('A' - 'a')] == 0) {
count[*ptr + ('A' - 'a')]++;
}
}
}
int main() {
char str1[] = "Hello, World!";
char str2[] = "WORLD, hello!";
countSameChars(str1, str2);
printf("相同字符及出现次数:\n");
for (int i = 0; i < 256; i++) {
if (count[i] > 0) {
printf("%c: %d\n", i, count[i]);
}
}
return 0;
}
```
阅读全文