【C语言指南】删除公共元素
【摘要】 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中
第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题
目录
一、问题描述
二、解题思路
- 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中
- 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题
- 注意事项:因为字符串中可能包含空格字符,所以使用scanf不能正确完成字符串读取,建议使用gets函数或fgets函数
三、源代码实现
解决方案一:拷贝到临时数组
#include<stdio.h>
int main()
{
char arr1[101] = { 0 };
char arr2[101] = { 0 };
gets(arr1);
gets(arr2);//创建两个数组接收两个字符串
char arr[101] = { 0 };//创建一个临时数组存储处理后结果
int i = 0;
for (char* a = arr1; *a != '\0'; a++)
{
int flag = 1;//使用标志位记录公共元素
for (char* b = arr2; *b != '\0'; b++)
{
if (*a == *b)
{
flag = 0;
break;
}
}
if (flag == 1)//如果不是公共元素,将其拷贝到临时数组
arr[i++] = *a;
}
arr[i] = '\0';
puts(arr);
return 0;
}
解决方案二:直接打印
#include<stdio.h>
int main()
{
char arr1[101] = { 0 };
char arr2[101] = { 0 };
gets(arr1);
gets(arr2);//创建两个数组接收两个字符串
int i = 0;
for (char* a = arr1; *a != '\0'; a++)
{
int flag = 1;//使用标志位记录公共元素
for (char* b = arr2; *b != '\0'; b++)
{
if (*a == *b)
{
flag = 0;
break;
}
}
if (flag == 1)//如果不是公共元素,将其打印到屏幕
printf("%c", *a);
}
return 0;
}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)