C语言,.随机输入两串字符串,找出两串字符串之间所有相同的字符并按照ASCI 码大小输出并统计重复字符的个数
时间: 2024-09-12 18:16:28 浏览: 48
与ASCII码相关的C语言字符串操作函数
在C语言中,你可以通过以下几个步骤来实现这个功能:
1. 首先,你需要从用户那里获取两个字符串作为输入。
2. 创建一个辅助函数,用于比较两个字符串并找到它们之间的公共字符。可以遍历一个字符串中的每个字符,检查它是否存在于另一个字符串中,并同时更新一个计数数组记录每个字符的出现次数。
3. 使用一个字符数组存储公共字符,因为ASCII码大小决定了排序顺序。
4. 按照ASCII码对字符数组进行排序,以便输出字符及其频率。
5. 输出排序后的字符以及它们的出现次数。
下面是一个简单的示例程序结构:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 定义一个结构体来存储字符及其频率
typedef struct {
char ch;
int count;
} CharInfo;
// 辅助函数用于查找公共字符和计数
void find_common_chars(char* str1, char* str2, CharInfo* common_chars) {
for (int i = 0; str1[i] != '\0'; i++) {
if (strchr(str2, str1[i]) != NULL) {
common_chars[str1[i] - 'a'] = (charInfo){str1[i], 1}; // ASCII a-z范围假设
// 如果字符已经在字典里,增加计数
else {
common_chars[str1[i] - 'a'].count++;
}
}
}
}
// 对字符信息进行排序
void sort_char_info(CharInfo* chars, int size) {
// 实现冒泡排序或其他排序算法,按ASCII码升序排列
}
int main() {
char str1[100], str2[100];
printf("请输入第一个字符串: ");
fgets(str1, sizeof(str1), stdin);
str1[strlen(str1) - 1] = '\0'; // 去除换行符
printf("请输入第二个字符串: ");
fgets(str2, sizeof(str2), stdin);
str2[strlen(str2) - 1] = '\0';
CharInfo common_chars[26] = {0}; // 假设只包含小写字母,所以26个位置
find_common_chars(str1, str2, common_chars);
// 排序和输出结果
sort_char_info(common_chars, 26);
for (int i = 0; i < 26; i++) {
if (common_chars[i].ch != '\0') {
printf("%c出现了 %d 次\n", common_chars[i].ch, common_chars[i].count);
}
}
return 0;
}
```
阅读全文