用c语言随机输入两串字符串,找出两串字符串之间所有相同的字符并按照ASCII码大小输出并统计重复字符的个数. 要求: (1)可输入小写,大写,数字 (2)遇到重复的字符只输出一次并只算一个个数 (3)尽可能完成按照ASCII码大小输出
时间: 2024-10-13 14:15:30 浏览: 32
在C语言中,你可以使用`scanf`函数获取用户输入的两个字符串,然后遍历这两个字符串,比较每个字符是否相等。如果找到相同的字符,可以将其添加到一个哈希表(如数组或链表结构)中,并记录计数。同时,为了保持ASCII值的顺序,可以在遍历时使用`if`语句检查当前字符是否小于前一个已发现的相同字符,如果是,则继续添加。
下面是一个简单的示例代码实现这个功能:
```c
#include <stdio.h>
#include <string.h>
#define MAX_CHAR 256
// 定义一个字符计数数组,用于存储相同字符及其数量
int char_count[MAX_CHAR] = {0};
char compare_chars(char str1[], char str2[]) {
int i, j;
for (i = 0, j = 0; str1[i] && str2[j]; ++i, ++j) {
if (str1[i] == str2[j]) {
// 如果字符相同并且还未出现过,更新计数
if (!char_count[str1[i]]) {
char_count[str1[i]]++;
printf("%d: '%c'\n", str1[i], str1[i]);
}
} else if (str1[i] < str2[j]) {
// 如果当前字符比之前的小,停止查找
break;
}
}
return j;
}
int main() {
char str1[100], str2[100];
printf("请输入第一个字符串: ");
fgets(str1, sizeof(str1), stdin);
str1[strlen(str1) - 1] = '\0'; // 去除fgets留下的换行符
printf("请输入第二个字符串: ");
fgets(str2, sizeof(str2), stdin);
str2[strlen(str2) - 1] = '\0';
// 比较两个字符串,并按ASCII码排序
int common_chars = compare_chars(str1, str2);
printf("\n共有 %d 个重复字符.\n", common_chars);
return 0;
}
```
在这个代码中,我们假设用户输入的字符串长度不会超过100个字符,并且只考虑ASCII码范围内的字符。如果你需要更复杂的功能或处理更大的数据量,可能需要调整数据结构或算法。
阅读全文