题目1:现有两个字符串s1和s2,请将s1中重复的字符删掉(并只保留第一个),然后将s1 中在s2中出现的字符也删掉,构成新的字符串,打印输出。请用C语言编程。不要用函数
时间: 2024-11-20 15:39:37 浏览: 25
函数:字符串s1中删除串s2里包含的所有字符(c语言)
5星 · 资源好评率100%
题目1的要求可以分为两步来实现:
1. 删除s1中的重复字符:我们可以使用哈希表(如`unordered_map`或`unordered_set`)来跟踪每个字符是否已经出现过,只有当字符第一次遇到时才添加到结果字符串。
2. 删除s1中s2中存在的字符:遍历s1的同时,检查该字符是否在s2中,不在的话就将其加入最终结果。
以下是简单的C语言代码实现,没有使用函数:
```c
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
// 定义一个布尔型数组表示字符是否存在
#define SIZE 256
bool isExist[SIZE] = {0};
int main() {
char s1[100], s2[100];
printf("请输入第一个字符串s1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // 移除fgets后的换行符
printf("请输入第二个字符串s2: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0';
int len_s1 = strlen(s1);
char result[len_s1 + strlen(s2) + 1]; // 初始化结果字符串足够大
result[0] = '\0'; // 确保初始为空
for (int i = 0; i < len_s1; ++i) {
if (isExist[s1[i]] == false && strchr(s2, s1[i]) == NULL) {
result[strlen(result)] = s1[i]; // 添加字符到结果
isExist[s1[i]] = true;
}
}
printf("新的字符串: %s\n", result);
return 0;
}
```
阅读全文