gpt4 book ai didi

c - 从 C 数组中删除重复的数字

转载 作者:太空宇宙 更新时间:2023-11-04 08:54:42 25 4
gpt4 key购买 nike

我在 main()

的某个点调用了这个 void 函数
void calc(int dim){

int a[dim],i,j,temp;

for(int i=0;i<dim;i++)
{
printf("\n\n Type a number - [%d/%d]: \t",i+1,dim);
scanf("%d", &a[i]);
}

for(i=0;i<dim;i++)
{

for(j=i+1;j<dim;j++) {

if(a[i]==a[j])
{
continue;
}

else
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
printf("%d", a[j]);
}
}
}

for(i=0;i<dim;i++)
printf("%d", a[i]);
}

输入参数 dim 是数组的维度。您看到的代码可以完美运行,因为它对我的数组中的数字进行了排序。

如果用户键入 4 5 8 7 5 作为输入数字,我希望得到这样的输出:8 7 5 4。我必须删除重复的数字,所以我写:

if(a[i]==a[j])
{
continue;
}

顺便说一句,输出仍然是 8 7 5 5 4。我该如何解决这个问题?

最佳答案

当您发现重复项时,您需要将其“移除”。您可能应该将列表中的最后一项移动到当前位置 (a[j]),然后递减 dim

您需要考虑如何将可能修改的维度返回给调用代码,但您也有其他代码如何获取函数本地数组的问题。

关于c - 从 C 数组中删除重复的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17863721/

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