zoukankan      html  css  js  c++  java
  • 从数组A中删除在数组B中存在的元素,用C语言实现

    从数组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 = 0;   //记录有几个被删除
    12     bool bsame = false;   //是否存在相同的元素
    13     int j=0;   //删除元素后的下标
    14 
    15     for (int i=0; i<lenA; i++)
    16     {
    17         bsame = false;
    18         for (int k=0; 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[9] = {7,2,5,9,10,23,67, 23, 11};
     4     //int arrB[3] = {4, 4, 4};
     5     int arrB[3] = {7, 5, 23};
     6     int arrlen = DelAwhichinB(arrA, 9, arrB, 3);
     7     printf("删除后的新数组是: ");
     8     for (int i=0; i<arrlen; i++)
     9     {
    10         printf("%d ", arrA[i]);
    11     }
    12 }

    测试结果:

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

  • 相关阅读:
    winform 计算器
    js 特效代码网址
    js 动图效果
    计算器 练习
    html frameset 练习
    SQL 仓库管理练习题
    数据库存取图片
    数据库查询Database中的表
    面向对象练习
    C#函数与SQL储存过程
  • 原文地址:https://www.cnblogs.com/suiyuemanbu/p/3668348.html
Copyright © 2011-2022 走看看