删除C中的数组元素 [英] Deleting an array element in C

查看:77
本文介绍了删除C中的数组元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我编写了以下程序来删除用户输入的数组元素.

#include <stdio.h>
#include <conio.h>

void main() {
    int j, i, a[100], n, key, l;
    clrscr();
    printf("Enter the number of elements:");
    scanf("%d", &n);
    printf("\nEnter the elements:\n");
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    printf("\nEnter the element to delete:");
    scanf("%d", &key);
    l = n;  //Length of the array
    for (i = 0; i < l; i++) {
        if (a[i] == key) {
           for (j = i; j < l; j++)
               a[j] = a[j + 1];
           l--;    //Decreasing the length of the array
        }
    }

    printf("\nThe new array is \n");
    for (i = 0; i < l; i++)
        printf("%d ", a[i]);
     getch();
}

对于大多数输入它都可以正常工作,但是当输入类似:1 2 2 3 5(此处2连续重复)并且要删除的元素为2时,输出为1 2 3 5.

如何修改程序,以便删除输入元素的所有实例?

解决方案

在l--之后也放置i--如下图所示

if(a[i]==key)
  {
   for(j=i;j<l;j++)
    a[j]=a[j+1];
   l--;    //Decreasing the length of the array
   i--;    //check again from same index i
  }

I wrote the following program to delete an array element entered by the user.

#include <stdio.h>
#include <conio.h>

void main() {
    int j, i, a[100], n, key, l;
    clrscr();
    printf("Enter the number of elements:");
    scanf("%d", &n);
    printf("\nEnter the elements:\n");
    for (i = 0; i < n; i++)
        scanf("%d", &a[i]);
    printf("\nEnter the element to delete:");
    scanf("%d", &key);
    l = n;  //Length of the array
    for (i = 0; i < l; i++) {
        if (a[i] == key) {
           for (j = i; j < l; j++)
               a[j] = a[j + 1];
           l--;    //Decreasing the length of the array
        }
    }

    printf("\nThe new array is \n");
    for (i = 0; i < l; i++)
        printf("%d ", a[i]);
     getch();
}

It works fine for most inputs but when the input is something like: 1 2 2 3 5 (here 2 repeats consecutively) and the element to be deleted is 2, the output is 1 2 3 5.

How can I modify the program such that all instances of the entered element is removed?

解决方案

After l-- put i-- too as shown below

if(a[i]==key)
  {
   for(j=i;j<l;j++)
    a[j]=a[j+1];
   l--;    //Decreasing the length of the array
   i--;    //check again from same index i
  }

这篇关于删除C中的数组元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆