gpt4 book ai didi

arrays - 计算数组中重复元素的数量 - C

转载 作者:行者123 更新时间:2023-11-30 21:12:37 25 4
gpt4 key购买 nike

从用户处获取大小为 N 的数组的输入,并打印重复元素的总数(出现两次或多次的元素)。

输入格式:第一行包含N,第二行包含N个正整数,以空格分隔。

输出格式:重复元素计数。

我编写的程序仅适用于两个相同的元素,并且无法读取超过 2 个重复项。

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

int main()
{
int arr[1000],i,j,n,count=0;
scanf("%d",&n);

for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}

for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
if(arr[i]==arr[j])
{
count=count+1;
break;
}
}
}
printf("%d",count);

}

输入(以八位数字为例):

1 2 3 1 2 1 5 6

此代码的输出不正确:

3

预期输出为 2,即具有重复项的元素计数(1 有两个重复项,2 有一个重复项)。

那么请解释一下我做错了什么?

最佳答案

您可以使用以下代码来实现相同的目的。它首先对数组进行排序:

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

int main()
{
int arr[1000],i,j,n,count=0, min;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
}

for(i=0;i<n;i++)
{
min = i;
for(j=i+1;j<n;j++)
{
if(arr[min]>arr[j])
{
min = j;
}
}
{
int temp = arr[min];
arr[min] = arr[i];
arr[i] = temp;
}
}

for(i=1;i<n;i++)
{
if(arr[i]==arr[i-1])
{
count++;
while(arr[i]==arr[i-1]) i++;
}
}
printf("%d",count);

return 0;
}

您可以find it working here

关于arrays - 计算数组中重复元素的数量 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44756630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com