我对C非常了解。目前,我正在编写一个程序,该程序应显示数组中的重复项。程序从用户读取N个数字(但N 我的代码可以工作,但是显示有问题。
例如,当它是5个elenets数组numb [5] = {1,2,2,2,3}时,程序显示2次3次,应该显示2次。
#include <stdio.h>
int main ()
{
int n, i, j, numbers[100]={0};
printf("number of elements (max 100):");
scanf("%i", &n);
printf("enter elements:");
for (i = 0; i < n; i++)
{
scanf("%i", &numbers[i]);
}
for (i = 0; i < n; i++)
{
for j = i+1; j < n; j++)
{
if (numbers[i] ==numbers[j])
{
printf("duplicates:%i\n", numbers[i]);
}
}
}
}
最佳答案
一旦numbers[i] ==numbers[j]
为true,您需要删除重复项(移位)或其他一些不再打印重复项的方法。因此,为此编写逻辑。
这是我在您的代码中所做的编辑:
#include <stdio.h>
int main ()
{
int n, i, j,k, numbers[100]={0};
printf("number of elements (max 100):");
scanf("%i", &n);
printf("enter elements:");
for (i = 0; i < n; i++)
{
scanf("%i", &numbers[i]);
}
for (i = 0; i < n; i++)
{
for (j = i+1; j < n; j++)
{
if (numbers[j] ==numbers[j+1])//once true shift all elements by once
{
for(k=j; k<n; k++)//loop for shifting elemenst
numbers[k]=numbers[k+1];
j--;//again starts comparing from previous position
n--;// no of elements reduced
}
}
}
for(i=0; i<n ;i++)
printf("%d \n",numbers[i]);
return 0;
}
希望对您有所帮助。
关于c - 在数组中查找重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47600919/