如何把int数组中的相同元素,从数组中删除。

public class demonew {

public static void main(String[] args) {
int[] n = { 1, 2, 3, 4, 5,3,3,3};
System.out.print("删除前:");
show(n);
int p=0;

 for(int k=0;k<n.length;k++){
 if(n[k]==3){
   p++;
}
 }


int[] n2 = new int[n.length - p];
int idx = 0;
for (int i : n) {
if (i != 3) {

n2[idx++] = i;
 
   }
   }


System.out.print("删除后:");
show(n2);
}


private static void show(int[] n) {
for (int i : n) {
System.out.print(i + ",");
}
System.out.println();
}
}
### 回答1: 在输出两个数组中相同元素时,可以使用两个循环来遍历这两个数组,然后使用 if 语句来检查两个数组中元素是否相同,如果相同,就输出该元素。 例如,假设你要输出两个数组 a 和 b 中相同元素,那么可以使用以下代码: ``` int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int b[10] = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (a[i] == b[j]) { printf("%d ", a[i]); } } } ``` 如果要删除数组中相同元素,可以使用双重循环,并使用 if 语句来检查两个数组中元素是否相同。如果相同,就将该元素删除。 例如,假设你要删除数组 a 中与数组 b 中相同元素,那么可以使用以下代码: ``` int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int b[10] = {5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (a[i] == b[j]) { for (int k = i; k < 9; k++) { a[k] = a[k + 1]; } break; } } } ``` 上面的代码中,我们使用了一个内部循环来遍历数组 b,并使用一个外部 ### 回答2: 首先,我们需要明确一点,C语言中的数组是不可动态改变长度的,所以无法真正删除元素,只能通过将元素标记为特殊值来模拟删除。 假设我们有两个数组array1和array2,分别表示两个待比较的数组。我们可以通过遍历array1中的每个元素,然后与array2中的元素进行逐一比较,找出相同元素。 具体步骤如下: 1. 声明一个新数组commonArray,用来存储相同元素。 2. 使用两重循环,外层循环遍历array1中的每个元素,内层循环遍历array2中的元素。 3. 在内层循环中,如果array1[i]与array2[j]相等,则说明找到了一个相同元素,将其添加到commonArray中。 4. 同时,将array1[i]和array2[j]所在位置的元素设为特殊值(如0),以模拟删除数组中的该元素。 5. 循环结束后,commonArray中就存储了两个数组中相同元素。 示例代码如下: ```c #include <stdio.h> #define ARRAY_LENGTH 10 void printArray(int arr[], int len) { for (int i = 0; i < len; i++) { printf("%d ", arr[i]); } printf("\n"); } int main() { int array1[ARRAY_LENGTH] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int array2[ARRAY_LENGTH] = {5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; int commonArray[ARRAY_LENGTH]; int commonIndex = 0; for (int i = 0; i < ARRAY_LENGTH; i++) { for (int j = 0; j < ARRAY_LENGTH; j++) { if (array1[i] == array2[j]) { commonArray[commonIndex++] = array1[i]; array1[i] = 0; // 将array1中的元素标记为特殊值0 array2[j] = 0; // 将array2中的元素标记为特殊值0 break; } } } printf("相同元素为:"); printArray(commonArray, commonIndex); printf("array1剩下的元素为:"); printArray(array1, ARRAY_LENGTH); printf("array2剩下的元素为:"); printArray(array2, ARRAY_LENGTH); return 0; } ``` 注意:该方法只适用于元素值不包含特殊值0的情况,如果数组中可能会有实际元素为0,则需要修改特殊值的选择。 ### 回答3: 为了输出两个数组的相同元素并在原数组中删除元素,我们可以遵循以下几个步骤: 1. 声明两个整型数组A和B,并初始化它们。 2. 遍历数组A中的每个元素a。 3. 在遍历数组B的过程中,检查是否存在与a相同元素。 4. 如果存在相同元素,则输出该元素并从数组A中删除元素。 5. 重复步骤2-4直到完成数组A的遍历。 6. 最后,输出数组A的更新结果。 以下是用C语言实现上述算法的代码示例: ```c #include <stdio.h> void findAndRemove(int A[], int B[], int sizeA, int sizeB) { for (int i = 0; i < sizeA; i++) { // 遍历数组A for (int j = 0; j < sizeB; j++) { // 遍历数组B if (A[i] == B[j]) { // 检查是否存在相同元素 printf("%d ", A[i]); // 输出相同元素 // 从数组A中删除相同元素 for (int k = i; k < sizeA - 1; k++) { A[k] = A[k + 1]; } sizeA--; // 更新数组A的大小 i--; // 调整索引,继续检查该位置的元素 break; } } } printf("\n更新后的数组A:"); for (int i = 0; i < sizeA; i++) { printf("%d ", A[i]); // 输出更新后的数组A } } int main() { int A[] = {1, 2, 3, 4, 5}; int B[] = {4, 5, 6, 7, 8}; int sizeA = sizeof(A) / sizeof(A[0]); // 数组A的大小 int sizeB = sizeof(B) / sizeof(B[0]); // 数组B的大小 printf("输出的相同元素:"); findAndRemove(A, B, sizeA, sizeB); return 0; } ``` 以上代码输出的结果会是: ``` 输出的相同元素:4 5 更新后的数组A:1 2 3 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值