描述 说明: 数字范围 0 < ai < 2^31 - 1 数字个数不超过 100 输入描述 一行内输入一串数字,以空格间隔。 输出描述 输出数组中存在重复值的元素个数,使用C语言实现
时间: 2024-02-12 17:07:58 浏览: 72
好的,下面是使用 C 语言实现的程序:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int nums[100], num_set[100] = {0};
int i, j, n, count = 0;
// 读取输入
n = 0;
while (scanf("%d", &nums[n]) == 1) {
n++;
}
// 判断重复元素
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (nums[i] == nums[j] && num_set[j] == 0) {
count++;
num_set[j] = 1; // 标记重复元素
}
}
}
// 输出结果
printf("%d\n", count);
return 0;
}
```
这个程序首先定义了两个数组 `nums` 和 `num_set`,分别用于存储输入的数字和标记数字是否重复。接着,程序使用 `scanf` 函数读取输入,将输入的数字存储到 `nums` 数组中。然后,程序使用两层循环判断 `nums` 数组中是否存在重复元素,如果存在,则将 `num_set` 数组对应位置的值标记为 1。最后,程序输出重复元素的个数。
需要注意的是,为了避免重复元素被重复计数,程序在标记重复元素时只标记后面的元素,而不标记前面的元素。例如,当判断到 `nums[2]` 和 `nums[4]` 重复时,只将 `num_set[4]` 标记为 1,而不将 `num_set[2]` 标记为 1。这样做可以确保每个重复元素只被计数一次。
阅读全文