现有两个字符串s1和s2,它们最多都只能包含255个字符。编写程序,将字符串s1中所有出现在字符串s2中的字符删去,然后输出s1。C语言
时间: 2023-06-03 10:04:48 浏览: 228
代码如下:
#include <stdio.h>
#include <string.h>
#define MAX_LEN 255
int main() {
char s1[MAX_LEN+1], s2[MAX_LEN+1];
printf("请输入字符串s1: ");
fgets(s1, MAX_LEN+1, stdin);
printf("请输入字符串s2: ");
fgets(s2, MAX_LEN+1, stdin);
int s1_len = strlen(s1);
int s2_len = strlen(s2);
for(int i=0; i<s1_len; i++) {
for(int j=0; j<s2_len; j++) {
if(s1[i] == s2[j]) {
memmove(s1+i, s1+i+1, s1_len-i);
s1_len--;
i--;
break;
}
}
}
printf("删除后的字符串s1为: %s", s1);
return 0;
}
相关问题
现有两个字符串s1和s2,它们最多都只能包含255个字符。编写程序,将字符串s1中所有出现在字符串s2中的字符删去,然后输出s1
好的,我明白了。以下是代码实现:
```python
s1 = input("请输入字符串s1:")
s2 = input("请输入字符串s2:")
new_s1 = ''
for char in s1:
if char not in s2:
new_s1 += char
print(new_s1)
```
注意,此代码并没有考虑字符串中存在重复字符的情况,如果需要在代码中进行优化可以考虑使用集合或字典来存储s2中的字符来提高查询效率。
现有两个字符串s1和s2,它们最多都只能包含255个字符,编写程序,将字符串s1中所有出现在字符串s2中的字符删去,然后输出s1
要编写一个程序,首先你需要遍历字符串s2,检查其中的每个字符是否也在s1中。如果是,则从s1中移除该字符。这里提供了一个简单的C语言代码示例:
```c
#include <stdio.h>
#include <string.h>
// 函数用于删除s1中的s2中存在的字符
void removeChars(char *s1, char *s2) {
int i, j;
for (i = 0; s2[i] != '\0'; i++) {
// 对于s2中的每个字符
for (j = 0; s1[j] != '\0' && s1[j] != s2[i]; j++) {} // 如果s1中的字符不是s2中的,移动指针
if (s1[j] == s2[i]) { // 如果找到了匹配的字符,跳过该位置
memmove(&s1[j], &s1[j+1], strlen(s1) - 1] = '\0'; // 更新字符串长度
}
}
}
int main() {
char s1[256], s2[256];
printf("Enter string s1: ");
fgets(s1, sizeof(s1), stdin);
s1[strcspn(s1, "\n")] = '\0'; // 去掉换行符
printf("Enter string s2: ");
fgets(s2, sizeof(s2), stdin);
s2[strcspn(s2, "\n")] = '\0'; // 去掉换行符
removeChars(s1, s2);
printf("String after removing characters from s2: %s\n", s1);
return 0;
}
```
在这个程序中,`removeChars`函数使用了`memmove`函数来移动字符串中的字符,避免直接修改数组可能导致的数据不连续。`main`函数中获取用户输入并调用这个函数。
阅读全文