一、问题描述
二、解题思路
- 第一种方法:创建一个临时数组,将字符串1中的每一个字符,与字符串2中的每一个字符分别进行比较,如果某个字符不是公共元素,则将其拷贝到临时数组中
- 第二种方法:因为题目没有要求处理后的数据,只要求打印在屏幕。所以每找到一个不需要删除的元素时,直接打印该字符也可以解决问题
- 注意事项:因为字符串中可能包含空格字符,所以使用scanf不能正确完成字符串读取,建议使用gets函数或fgets函数
- 关于scanf函数的更多详细介绍【C语言基础篇】scanf()函数详解-CSDN博客
三、源代码实现
解决方案一:拷贝到临时数组
#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; }
个人主页: 倔强的石头的博客
(关注作者,获取更多有趣实用的编程知识哦)