从数组A中删除在数组B中存在的元素,用C语言实现

考验数组操作的能力,C语言的熟练程度。

  1. //功能:从数组A中删除在数组B中也存在的数据
  2. //输入:arrA --- 数组A
  3. // lenA --- 数组A的长度
  4. // arrB --- 数组B
  5. // lenB --- 数组B的长度
  6. //输出:删除后A的长度
  7. int DelAwhichinB(int* arrA, int lenA, int* arrB, int lenB)
  8. {
  9. //int lenA = sizeof(arrA); //这里是4,自动退化为指针
  10.  
  11. int ndelcount = ; //记录有几个被删除
  12. bool bsame = false; //是否存在相同的元素
  13. int j=; //删除元素后的下标
  14.  
  15. for (int i=; i<lenA; i++)
  16. {
  17. bsame = false;
  18. for (int k=; k<lenB; k++)
  19. {
  20. if (arrB[k] == arrA[i])
  21. {
  22. ndelcount++;
  23. bsame = true;
  24. break;
  25. }
  26. }
  27.  
  28. if (false == bsame)
  29. {
  30. //如果在B中不存在,就放入新数组
  31. arrA[j++] = arrA[i];
  32. }
  33. }
  34.  
  35. return (lenA-ndelcount);
  36. }

测试代码:

  1. int main(int argc, char* argv[])
  2. {
  3. int arrA[] = {,,,,,,, , };
  4. //int arrB[3] = {4, 4, 4};
  5. int arrB[] = {, , };
  6. int arrlen = DelAwhichinB(arrA, , arrB, );
  7. printf("删除后的新数组是: ");
  8. for (int i=; i<arrlen; i++)
  9. {
  10. printf("%d ", arrA[i]);
  11. }
  12. }

测试结果:

以上是用最简单,也最容易想到的办法实现的,可能性能不是很好。希望提出改进建议,谢谢

从数组A中删除在数组B中存在的元素,用C语言实现的更多相关文章

  1. 剑指Offer:从第一个字符串中删除第二个字符串中出现过的所有字符

    // 从第一个字符串中删除第二个字符串中出现过的所有字符 #include <stdio.h> char* remove_second_from_first( char *first, c ...

  2. LeetCode初级算法之数组:26 删除排序数组中的重复项

    删除排序数组中的重复项 题目地址:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/ 给定一个排序数组,你需要在 ...

  3. 4.19——数组双指针——26. 删除有序数组中的重复项 & 27. 删除有序数组中的重复项II & 80. 删除有序数组中的重复项 II

    第一次做到数组双指针的题目是80: 因为python的List是可以用以下代码来删除元素的: del List[index] 所以当时的我直接用了暴力删除第三个重复元素的做法,大概代码如下: n = ...

  4. Leetcode 数组问题:删除排序数组内的重复项

    问题描述: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...

  5. Java中删除第一个集合中以某某开头的元素,删除第二个集合中以某某结尾的元素,并合并成一个集合

    import java.util.ArrayList; import java.util.List; public class Test { public static void main(Strin ...

  6. [LEETCODE] 初级算法/数组 1.1删除排序数组中的重复项

    题目: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成. ...

  7. 36.在字符串中删除特定的字符[Delete source from dest]

    [题目] 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”. ...

  8. VS2013 删除"附加依赖项"中“继承的值”

    经过好几次尝试,都无法在VS2013中直接删除“继承的值”,于是另辟蹊径,找到了一种解决方法. 相对而言,在 VS2010 中干这件事会容易一点,或者说,成功率更高一点,于是,我的思路就是再装一个 V ...

  9. java 在循环中删除数组元素

    在写代码中经常会遇到需要在数组循环中删除数组元素的情况,但删除会导致数组长度变化. package com.fortunedr.thirdReport; import java.util.ArrayL ...

随机推荐

  1. 1.1 Eclipse下载安装(+java环境)

    可直接上官网下载:http://www.eclipse.org/downloads/ 直接下载地址:http://www.eclipse.org/downloads/download.php?file ...

  2. sqli-libs(23-28a关)

    Less_23 首先在php文件中加入echo $sql;echo "<br>"; 方法一: :%00 输入?id=1’,报错,说明存在注入漏洞: 输入?id=1' - ...

  3. 关于mybatis中多参数传值

    如果前台单独传递多个参数,并且未进行封装,在mybatis的sql映射文件中需要以下标的形式表示传递的参数,从0开始 即:where name=#{0} and password =#{1}:0表示第 ...

  4. Drawer 侧边栏、以及侧边栏内 容布局

    一.Flutter Drawer 侧边栏 在 Scaffold 组件里面传入 drawer 参数可以定义左侧边栏,传入 endDrawer 可以定义右侧边栏.侧边栏默认是隐藏的,我们可以通过手指滑动显 ...

  5. 【音乐欣赏】《Siren》 - The Chainsmokers / Aazar

    曲名:Siren 作者:The Chainsmokers . Aazar [00:00.00] 作曲 : Alex Pall/Andrew Taggart/Alexis Duvivier [00:01 ...

  6. C语言实例-大小写字母间的转换

    初学C语言都会遇到要求写大小写转换的题目 这类题目主要通过ASCII(美国信息交换标准代码)码差值实现,A对应ASCII码十进制数字是65,a对应ASCII码十进制数字是97,即大小写字母之间ASCI ...

  7. KFC 小猪短租

    # 分析肯德基门店信息 import requests,json post_url = 'http://www.kfc.com.cn/kfccda/ashx/GetStoreList.ashx?op= ...

  8. 隐藏pyqt中调用matplotlib图片中的工具栏

    方法: # pyqtgraph使用matplotlib import pyqtgraph.widgets.MatplotlibWidget as mw a_plt = mw.MatplotlibWid ...

  9. [转] C++ CImage实现的全屏PNG截图

    #include <atlimage.h> #include <atltime.h> #include <conio.h> //截取全屏保存为png CString ...

  10. github初使

    怎么说那,全英文,对于我这个英文水平不是很高的人来说有一定的影响,但是这也促使了我学习英语,而且里面一些大牛的发表也不少的是英文版的,我感觉我在英语方面的需求,由github来提升了,早就注册好了账号 ...