目录
一、问题描述
二、解题思路
三、源代码实现
解决方案一:拷贝到临时数组
解决方案二:直接打印
个人主页: 倔强的石头的博客
系列专栏 :C语言指南 C语言刷题系列
一、问题描述
二、解题思路
- 第一种方法:创建一个临时数组,将字符串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;
}
个人主页: 倔强的石头的博客
(关注作者,获取更多有趣实用的编程知识哦)