1、例如,数组a:1,2,3,4,2,5,6,7,9
输出‘数组中有重复元素2
题解代码:(当然目前只能输出第一个重复值,对于其他的重复值还做不到)
#include<stdio.h>
#define N 100
//判断数组中是否存在重复元素
int dmrepeat(int a[],int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(a[i]==a[j])
return a[i];
}
}
return -1;
}
int main()
{
int i,n,a[N],result;
printf("请输入元素个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
result=dmrepeat(a,n);
if(result != -1)
{
printf("数组中有重复元素 %d",result);
}else{
printf("数组中没有重复元素");
}
return 0;
}
2、例如,数组a:1,2,3,4,2,5,1,7,1,7,
删除重复元素后,数组a改为:1,2,3,4,5,7。
题解代码:
#include <stdio.h>
#define N 100
int delrepeat(int a[], int n) {
if (n == 0 || n == 1) {
return n;
}
int i, j, k;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;)
{
if(a[i]==a[j]) //判断重复值
{
for(k=j;k<n-1;k++)
{
a[k]=a[k+1];//发现重复值,后面一个覆盖前面一个
}
n--;//覆盖完后总的元素个数-1
} else {
j++;
}
}
}
return n;
}
int main() {
int i,n,a[N];
printf("请输入元素个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
n = delrepeat(a, n);
printf("删除重复元素后的数组为:");
for (int i = 0; i < n; i++) {
printf("%3d",a[i]);
}
printf("\n");
printf("集合中元素的个数为:%d", n);
return 0;
}