【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;
}

 个人主页:    倔强的石头的博客

(关注作者,获取更多有趣实用的编程知识哦)

相关文章
|
3月前
|
C语言
【C语言刷题系列】合并两个有序数组
【C语言刷题系列】合并两个有序数组
|
1月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
3月前
|
存储 C语言
【C语言刷题系列】对数字添加逗号
【C语言刷题系列】对数字添加逗号
|
3月前
|
C语言
【C语言刷题系列】喝汽水问题
【C语言刷题系列】喝汽水问题
|
1月前
|
存储 C语言
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
【数据结构】c语言链表的创建插入、删除、查询、元素翻倍
|
1月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
1月前
|
测试技术 C语言 C++
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
【C语言刷题训练——6】鹏哥C语言刷题训练营笔记,含代码讲解改进
|
1月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
3月前
|
C语言
C语言刷题(函数)
C语言刷题(函数)
|
3月前
|
C语言
C语言刷题(数组)
C语言刷题(数组)