C语言实现删除某一个数组值的方法

目录
  • 1、前言
  • 2、删除数组中的元素

1、前言

在家里闲着还是闲着,这几天见证了Python各种数据结构的强大。Python中的数据类型如:列表、元组、字典等都具有其的特点。列表无需要设定其的长度,我们可以随机插入元素,同时元素的类型也是随意的。

或许这就是面向对象语言的强大,C语言做为面向过程的语言自然没有如同Python一般强大的功能。学习C语言不会指针和结构体确实玩不出什么东西,就例次CCF考试的字符串处理题使用C语言难度都很大,但是使用诸如C++一样面向对象的语言都是能轻而易举地解决问题的。

不过为了让以后处理C语言更加方便,个人打算今后在这记录一些使用的函数,大家可以自取。

2、删除数组中的元素

python中我们可以轻易地使用如下的方法删除特定的元素:

lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"]

#使用正数索引

del lang[2]
print(lang)

然而C语言一切东西都得靠自己搭建。在学习数据结构时第一个实验就是与顺序表处理相关的内容,这里介绍的就是其中一个操作。

我们在这边就可以先定义一个函数,参数分别是数组名和数组长度:

void del_element(int arr[],int n) //n为数组的元素个数

数组的长度虽然需要我们自己给定,但是我们不必要直接写出其具体的元素个数,而直接先向数组中赋值。

int arr[]={1,4,5,7};

既然要删除数组中的元素,我们就必须得先知道数组中有哪些元素。同时还要定义一个变量,并将需要删除的元素赋值给那个变量。

  int delect=0;

    printf("删除操作前的数组:\n");
    for(int k = 0;k<n;k++)
    {
        printf("%4d",arr[k]);
    }
    printf("\n");

    printf("请输入你要删除的数:");
    scanf("%d",&delect);

下面就是重中之中,删除这个元素的操作:

将要删去的元素后面的元素往前移,那个要删除的函数自然而然就被覆盖掉了。

函数源代码:

void del_element(int arr[],int n) //n为数组的元素个数
{
    int delect=0;

    printf("删除操作前的数组:\n");
    for(int k = 0;k<n;k++)
    {
        printf("%4d",arr[k]);
    }
    printf("\n");

    printf("请输入你要删除的数:");
    scanf("%d",&delect);

    for(int i=0;i<=n-1;i++)
    {
        if(delect==arr[i])
        {
            for(int j=i;j<=n-2;j++)
            {
                arr[j]=arr[j+1];//覆盖
            }
        }
    }
}

下面我们在主函数中调用该函数:

int main()
{
    int arr[]={1,4,5,7};
    int length_arr = sizeof(arr)/sizeof(int);
    del_element(arr,length_arr);
    printf("完成操作后的数组:\n");
    for(int i=0;i<length_arr-1;i++)
    {
        printf("%4d",arr[i]);
    }
    return 0;
}

我们可以不需去计算数组元素个数,而是使用sizeof(arr)/sizeof(int)的方式计算数组长度。

操作过程与结果:

C语言虽然较为麻烦,但是我们仍然可以用一些简单的方法实现。

到此这篇关于C语言数组中删除数组中某个值的方法的文章就介绍到这了,更多相关C语言数组中删除数组中某个值内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言数组添加和删除元素的实现

    数组不擅长插入(添加)和删除元素.数组的优点在于它是连续的,所以查找数据速度很快.但这也是它的一个缺点.正因为它是连续的,所以当插入一个元素时,插入点后所有的元素全部都要向后移:而删除一个元素时,删除点后所有的元素全部都要向前移. 插入算法 # include <stdio.h> int main(void) { int a[23] = {1, 5, 66, 8, 55, 9, 1, 32, 5, 65, 4, 8, 5, 15, 64, 156, 1564, 15, 1, 8, 9, 7,

  • C语言之从字符数组中删除特定的字符

    从字符数组中删除特定的字符,即输入要删除的指定字符,利用for循环找到非指定字符,将非指定字符输出即可.以下为具体的实现方法: #include<stdio.h> int main() { char str[100],c; int j,k; printf("please input a string:"); gets(str); printf("\nEnter a character:"); c=getchar(); for(j=k=0;str[j]!=

  • C语言实现删除某一个数组值的方法

    目录 1.前言 2.删除数组中的元素 1.前言 在家里闲着还是闲着,这几天见证了Python各种数据结构的强大.Python中的数据类型如:列表.元组.字典等都具有其的特点.列表无需要设定其的长度,我们可以随机插入元素,同时元素的类型也是随意的. 或许这就是面向对象语言的强大,C语言做为面向过程的语言自然没有如同Python一般强大的功能.学习C语言不会指针和结构体确实玩不出什么东西,就例次CCF考试的字符串处理题使用C语言难度都很大,但是使用诸如C++一样面向对象的语言都是能轻而易举地解决问题

  • C#删除最后一个结尾逗号的方法

    本文实例讲述了C#删除最后一个结尾逗号的方法.分享给大家供大家参考.具体实现方法如下: C#开发过程中经常会用逗号将数组或者列表中的字符串进行连接,这样往往最后会多一个逗号,这个函数用于去除最后的那个逗号,很简单. /// <summary> /// 删除最后结尾的一个逗号 /// </summary> public static string DelLastComma(string str) { return str.Substring(0, str.LastIndexOf(&q

  • PHP简单实现合并2个数字键数组值的方法

    本文实例讲述了PHP简单实现合并2个数字键数组值的方法.分享给大家供大家参考,具体如下: 先要了解一个基础知识点:PHP合并数组+与array_merge的区别分析 <?php /** * PHP合并2个数字键数组的值 * * @param array $arr1 * @param array $arr2 * @return array */ function new_array_merge($arr1, $arr2) { if (!is_array($arr1) || !is_array($a

  • C语言求连续最大子数组和的方法

    本文实例讲述了C语言求连续最大子数组和的方法,是非常实用的技巧.分享给大家供大家参考. 具体实现方法如下: #include <iostream> using namespace std; int array[] = {1, -2, 3, 10, -4, 7, 2, -5}; //int array[] = {-10, -1, -2, -3, -4, -5}; const int size = sizeof array / sizeof *array; int maxSubArray(int

  • PHP判断一个数组是另一个数组子集的方法详解

    本文实例讲述了PHP判断一个数组是另一个数组子集的方法.分享给大家供大家参考,具体如下: 前言 今天完成一个算法的过程中,有几个需求模块,其中就有判断$a数组是否是$b数组的子集,可能最近我写c比较多,直接就用for循环实现了,但是感觉代码量比较大,不够优雅!在qq群里集思广益了一下,发现很多php提供的系统功能函数都是可以供调用的,这里记录一下 需求 最少的时间复杂度判断$a数组是否是$b数组的子集 // 快速的判断$a数组是否是$b数组的子集 $a = array(135,138); $b

  • smarty模板引擎使用内建函数foreach循环取出所有数组值的方法

    本文实例讲述了smarty内建函数foreach的使用方法,分享给大家供大家参考.具体如下: 显示文件:index.php: 复制代码 代码如下: <?php //创建smarty对象 require_once("./libs/Smarty.class.php"); $smarty = new Smarty(); $arr1 = array("北京","上海","广州");//索引数组 $smarty->assig

  • 用批处理删除注册表健值的方法分享

    一个基本的格式参考 reg delete KeyName [/v ValueName | /ve | /va] [/f] KeyName [\\Machine\]FullKey Machine 远程机器名 - 忽略当前机器的默认值. 远程机器上只有 HKLM 和 HKU. FullKey ROOTKEY\SubKey ROOTKEY [ HKLM | HKCU | HKCR | HKU | HKCC ] SubKey 所选 ROOTKEY 下的注册表项的全名. ValueName 所选项下的要删

  • Java如何实现通过键盘输入一个数组

    目录 如何通过键盘输入一个数组 第一种方法:(不限制输入数组的长度) 第二种方法:(限制输入的个数) 不限制从键盘输入一个数组 下面用二分查找举例 如何通过键盘输入一个数组 有时候在编写Jave的时候需要键盘输入一个数组,本小白也是看了几篇博客后才知道了如何在自己的程序中进行键盘输入,直接上代码: 第一种方法:(不限制输入数组的长度) System.out.println("请输入几个数并用逗号隔开:"); Scanner sc = new Scanner(System.in); St

  • Java数组,去掉重复值、增加、删除数组元素的方法

    如下所示: import java.util.List; import java.util.ArrayList; import java.util.Set; import java.util.HashSet; public class lzwCode { public static void main(String [] args) { testA(); System.out.println("==========================="); testB(); System

  • PHP递归删除多维数组中的某个值

    今天在做业务逻辑的过程中,需要在一个不确定的多维数组中删除某个特定的key,查了挺长时间加上自己的修改,终于满足了业务逻辑,该方法在修改后应该可以适用于很多地方,所以记录下来以备后用,我这里是一个多维数组,还是json_encode后的,主要目的是删除所有old_tags_id数组中有tag_id=264的数据,顺便要删除相应的tag_name,还有 addtag要减1,,代码如下: 先放递归函数,当然这里是核心,很多人看了这个应该就已经知道如何使用了. public function deal

随机推荐