同时删除数组的多个元素

#include<stdio.h>
#include<stdlib.h>

#define N 20

//打印一维数组
void display(int a[],int n)
{
    int i;
    for (i=0;i<n;i++)
    {
        printf("%d ",a[i]);
    }
    printf("\n");
}

void fun(int *a,int n,int *del,int m)
{
    int i,c=0;
    int *table = (int*)malloc(sizeof(int)*n);
    for (i=0;i<n;i++)
    {
        table[i] = 0;
    }

    for (i=0;i<m;i++) // 标记
    {
        table[del[i]] = 1;
    }

    for (i = n-1; i>=0; i--)
    {
        if (table[i]) // 查找 i
        {
            c++;
        }else
        {
            a[i+c] = a[i];
        }
    }

    for (i = 0;i<c;i++)
    {
        a[i] = 100;
    }
}
int main()
{
    int a[N],i,del[4],count=0;
    // 初始化
    for (i=0;i<N;i++)
    {
        a[i] = i;
    }
    display(a,N);
    printf("请输入需要删除的元素:从大到小:\n");
    while (scanf("%d",del+count)!=EOF)count++;
    printf("你要删除的元素是:\n");
    display(del,count);

    printf("删除后的元素为:\n");
    fun(a,N,del,count);
    display(a,N);
    system("pause");
    return 0;
}

转载于:https://www.cnblogs.com/dzqdzq/p/3522349.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用ArrayList来实现动态删除多个元素,具体步骤如下: 1. 将字符串数组转化为ArrayList对象,使用Arrays.asList()方法即可实现: ```java String[] strArray = {"A", "B", "C", "D", "E"}; List<String> list = new ArrayList<String>(Arrays.asList(strArray)); ``` 2. 使用removeAll()方法删除多个元素,参数为需要删除元素的集合对象,如下所示: ```java List<String> removeList = Arrays.asList("A", "C", "E"); list.removeAll(removeList); ``` 3. 将ArrayList转化为字符串数组即可,如下所示: ```java String[] resultArray = list.toArray(new String[0]); ``` 这样,resultArray就是删除指定元素后的字符串数组。 ### 回答2: 在Java中,字符串数组是一个固定长度的数组,所以无法直接删除元素。但是我们可以使用一些技巧来实现删除多个元素的目的。 一种常见的方法是创建一个新的字符串数组,并将要删除元素排除在外。具体操作步骤如下: 1. 首先,遍历原始字符串数组,统计不需要删除元素个数,例如使用一个计数器变量count。 2. 根据统计的不需要删除元素个数创建一个新的字符串数组,例如使用new String[count]。 3. 再次遍历原始字符串数组,将不需要删除元素逐个赋值给新的字符串数组。 4. 最后,将新的字符串数组作为结果返回。 以下是一个示例代码: ```java public class RemoveElementsInStringArray { public static String[] removeElements(String[] arr, String[] elementsToRemove) { int count = 0; for (String element : arr) { boolean shouldRemove = false; for (String elementToRemove : elementsToRemove) { if (element.equals(elementToRemove)) { shouldRemove = true; break; } } if (!shouldRemove) { count++; } } String[] newArr = new String[count]; int index = 0; for (String element : arr) { boolean shouldRemove = false; for (String elementToRemove : elementsToRemove) { if (element.equals(elementToRemove)) { shouldRemove = true; break; } } if (!shouldRemove) { newArr[index++] = element; } } return newArr; } public static void main(String[] args) { String[] arr = {"apple", "banana", "orange", "grape", "mango"}; String[] elementsToRemove = {"banana", "grape"}; String[] newArr = removeElements(arr, elementsToRemove); for (String element : newArr) { System.out.println(element); } } } ``` 该代码会输出: ``` apple orange mango ``` 以上就是使用Java删除字符串数组中多个元素的方法。 ### 回答3: 要删除Java字符串数组中的多个元素,我们可以使用以下方法: 1. 创建一个新的字符串数组,用于存储删除元素后的结果。 2. 使用循环遍历原始字符串数组。 3. 在循环中,使用条件判断语句来判断当前元素是否需要删除。如果需要删除,则跳过该元素,进行下一次循环;如果不需要删除,则将该元素添加到新的字符串数组中。 4. 循环结束后,新的字符串数组就是删除元素后的结果。 以下是一个示例代码: ```java public class Main { public static void main(String[] args) { // 原始字符串数组 String[] arr = {"apple", "banana", "orange", "pear", "kiwi"}; // 需要删除元素 String[] toBeDeleted = {"banana", "kiwi"}; // 创建一个新的字符串数组 String[] newArr = new String[arr.length - toBeDeleted.length]; int newIndex = 0; for (int i = 0; i < arr.length; i++) { boolean shouldDelete = false; for (int j = 0; j < toBeDeleted.length; j++) { if (arr[i].equals(toBeDeleted[j])) { shouldDelete = true; break; } } if (!shouldDelete) { newArr[newIndex] = arr[i]; newIndex++; } } // 输出删除元素后的结果 for (int i = 0; i < newArr.length; i++) { System.out.println(newArr[i]); } } } ``` 以上代码将输出: ``` apple orange pear ``` 这样就完成了Java字符串数组删除多个元素的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值