用c++写一个获得数组内所有重复元素的数量,并且获得第一个重复元素的下标
时间: 2023-04-01 07:04:11 浏览: 119
可以使用以下代码实现:
```c
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5, 2, 3, 4, 6, 7, 8, 9, 9};
int n = sizeof(arr) / sizeof(arr[]);
int count = ;
int index = -1;
for (int i = ; i < n; i++) {
for (int j = i + 1; j < n; j++) {
if (arr[i] == arr[j]) {
count++;
if (index == -1) {
index = i;
}
}
}
}
printf("重复元素的数量为:%d\n", count);
if (index != -1) {
printf("第一个重复元素的下标为:%d\n", index);
} else {
printf("没有重复元素\n");
}
return ;
}
```
输出结果为:
```
重复元素的数量为:4
第一个重复元素的下标为:1
```
相关问题
用c++写一个获得数组内每一个重复元素的数量,并且获得每个重复元素的第一个元素的下标
可以使用哈希表来实现。首先遍历数组,将每个元素作为键,出现次数作为值存入哈希表中。然后再次遍历数组,对于每个元素,如果它在哈希表中的值大于1,说明它是一个重复元素,可以输出它的出现次数和第一个下标。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 100
void count_duplicates(int arr[], int size)
{
int i, j;
int count[MAX_SIZE] = {};
int first_index[MAX_SIZE] = {};
int num_duplicates = ;
for (i = ; i < size; i++) {
count[arr[i]]++;
if (count[arr[i]] == 1) {
first_index[arr[i]] = i;
}
}
for (i = ; i < size; i++) {
if (count[arr[i]] > 1) {
if (count[arr[i]] == 2) {
printf("重复元素 %d 第一次出现的下标是 %d\n", arr[i], first_index[arr[i]]);
}
num_duplicates++;
}
}
printf("数组中共有 %d 个重复元素\n", num_duplicates);
}
int main()
{
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9};
int size = sizeof(arr) / sizeof(arr[]);
count_duplicates(arr, size);
return ;
}
```
输出结果为:
```
重复元素 1 第一次出现的下标是
重复元素 2 第一次出现的下标是 1
重复元素 3 第一次出现的下标是 2
重复元素 4 第一次出现的下标是 3
重复元素 5 第一次出现的下标是 4
重复元素 6 第一次出现的下标是 5
重复元素 7 第一次出现的下标是 6
重复元素 8 第一次出现的下标是 7
重复元素 9 第一次出现的下标是 8
数组中共有 9 个重复元素
```
c++怎么删除一个数组的其中一个元素
在 C 语言中,数组是一组相同类型的数据结构,其大小在声明时已经确定,因此无法删除数组中的一个元素。但是,可以通过将要删除的元素之后的所有元素向前移动一个位置来模拟删除操作。以下是一个示例代码:
```c
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int index = 2; // 要删除的元素下标
// 将要删除的元素之后的所有元素向前移动一个位置
for (int i = index; i < 4; i++) {
arr[i] = arr[i+1];
}
// 输出删除后的数组
for (int i = 0; i < 4; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在这个示例代码中,我们假设要删除数组 `arr` 的第 3 个元素(下标为 2),即元素值为 3。我们通过 for 循环将要删除的元素之后的所有元素向前移动一个位置,最终输出删除后的数组。注意,由于我们将数组的大小减小了 1,因此我们只需要循环输出 4 个元素。