c语言删除数组指定元素

推荐 生活 2019-03-22 11:35:57 809

本文收集整理关于c语言删除数组指定元素的相关议题,使用内容导航快速到达。

内容导航:

  • Q1:c++或c语言编写程序删除数组中指定位置处的元素.... 我想输入“删除第几
  • Q2:用C语言编写在一个数组中删除指定元素的程序,以下是本人写的一些代码,由于初学,麻烦高手指点修改
  • Q3:C语言 数组 实现删除一数组中的某指定元素。
  • Q4:C语言,从数组中删除一个指定元素。
  • Q5:C语言删除数组指定元素
  • Q1:c++或c语言编写程序删除数组中指定位置处的元素.... 我想输入“删除第几

    把要插入的位置后面的所有元素均向后移一位,数组长度增加1;把需要删除的元素后面所有元素均向前移动一位,这是要删除的元素已经被覆盖了,同时数组长度减去1

    Q2:用C语言编写在一个数组中删除指定元素的程序,以下是本人写的一些代码,由于初学,麻烦高手指点修改

    #include
    #define ARR_SIZE 5、int Delete(int *a, int n, int x);
    void main()
    {
    int a[ARR_SIZE-1], x, i, n; printf("Please enter array numbers:\n");
    scanf("%d", &n); printf("Please enter array:\n");
    for (i=0; i {
    scanf("%d", &a[i]);
    } printf("Please enter a number what you want to delet:\n");
    scanf("%d", &x); if( Delete(a, n, x) == -1 )
    printf("can not find the number!\n") ;
    else
    {
    printf("After delet %d:\n", x);
    for(i=0; i < n - 1; i++)
    {
    printf("%d ", a[i]);// 不要加地址符,我还以为我编译器坏了,囧
    }
    }
    }
    int Delete(int *a, int n, int x)
    {
    int *p=NULL, *pos=NULL; for (p=a; p {
    if (*p == x)
    break;
    } if( p >= a + n )
    return -1 ; for( ; p < a + n - 1 ; ++p )//循环反了,后边的数据会把前边的覆盖
    {
    *p=*(p+1);
    } return 0 ;
    }

    Q3:C语言 数组 实现删除一数组中的某指定元素。

    123456789101112#includeintmain(){inta[10]={1,1,2,6,5,6,3,5,7,3};intv,i,n;scanf("%d",&v);for(i=n=0;i<10;i++)if(a[i]!=v)a[n++]=a[i];for(i=0;i

    Q4:C语言,从数组中删除一个指定元素。

    del函数的作用是删除数组a中的指定元素x,n为数组a的元素个数。函数的返回值,为删除元素后的有效元素个数(数组中可能有重复元素)。

    函数的原型为:
    int del (int a[10],int n,int x)
    (1)请实现这个函数,并完成测试。

    [参考解答]

    [cpp]view plaincopy

    #include

    intdel(inta[],intn,intx);

    intmain()

    {

    inta[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,78,87,64,59,61,76};

    inti,n;

    n=del(a,20,77);

    printf("剩余%d个:\n",n);

    for(i=0;i

    printf("%d",a[i]);

    printf("\n");

    return0;

    }

    intdel(inta[],intn,intx)//删除长度为n的a数组中值为x的元素

    {

    intp=0,q=0;//用p和q两个变量

    while(q

    {

    if(a[q]!=x)//只有当元素值不等于x才往p标识的位置上“搬”

    {

    a[p]=a[q];

    p++;

    }

    q++;

    }//最后的效果,等于x的元素都没有“搬”过来,它们被“覆盖”了,也即被删除了

    returnp;//p代表的,就是删除后的元素个数

    }


    (2)如果在函数调用时,要求数组中的元素呈升序排列呢?

    [参考解答]

    思路:例如在下面main函数中的测试,删除77时,分三个阶段:①先找到77;②跨过若干个77后,找到了80;③从80开始,将数据逐个地搬到前面合适的位置(“覆盖”了77及随后的位置)。

    [cpp]view plaincopy

    #include

    intdel(inta[],intn,intx);

    intmain()

    {

    inta[20]={58,59,61,62,64,67,68,76,77,77,77,80,80,85,86,87,88,88,92,96};

    inti,n;

    n=del(a,20,77);

    printf("剩余%d个:\n",n);

    for(i=0;i

    printf("%d",a[i]);

    printf("\n");

    return0;

    }

    intdel(inta[],intn,intx)//删除长度为n的a数组中值为x的元素

    {

    intp=0,q;

    while(a[p]

    p++;

    q=p;//阶段②:p将标记住这个待删除的位置

    while(a[q]==x&&q

    q++;

    while(q

    a[p++]=a[q++];//阶段③:将要保留的元素,直接“覆盖”到p标记住的位置,逐个赋值,结果就是将等于x的元素删除了

    returnp;//p代表的,就是删除后的元素个数

    }

    Q5:C语言删除数组指定元素

    void main()
    {
    int i,j,n;
    int a[10];
    int k=0; //记录删除数据的个数
    printf("请输入需要删除的数:\n");
    scanf("%d",&n);
    printf("请输入10个元素的数组: \n");
    for (i=0;i<10;i++)
    scanf("%d",&a[i]);
    for (i=0;i<10;i++)
    if (a[i]==n)
    {
    for (j=0;i+j<9;j++)
    a[i+j]=a[i+j+1];
    k++;//删除数据的个数加1、 a[10-k] = 0; //清除最后一个已经前移过的数据
    } for (i=0;i<10-k;i++)//输出剩余的数据,后面的数据为0代表已经被删除的无意义数据,不必再输出了。
    printf("%5d",a[i]);
    }WWW.YiJiTaO.▶Com

    相关文章
    c语言字符串输出一部分2019-01-22
    c语言怎么生成exe文件2019-01-27
    c语言十进制转十六进制2019-02-13
    c语言定义多个结构体2019-02-17
    c语言输入数字变成字母2019-02-19
    设置c语言中字体颜色2019-02-20
    c语言逻辑运算符优先级2019-02-21
    C语言最大值最小值编程2019-02-22
    c语言打开文件怎么输入2019-02-25
    c语言 数组和指针区别2019-02-26