首页 > 解决方案 > 使用指针查找重复项

问题描述

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

int main()
{
    int *num=malloc(sizeof(int)*10);
    int n,dup=0;
    printf("Enter number of elements");
    scanf("%d",&n);
    printf("Enter numbers");
    for(int i=0;i<n;i++)
    {
            scanf("%d",num+i);

    }

    for(int i=0;i<n;i++)
    {
        for(int j=1;j<n;j++)
        {
            if(*(num+i)==*(num+j))
            {
                    dup++;
            }

         }
         }

    printf("%d",dup);
    free(num);

    return 0;
}

我正在尝试使用指针查找元素重复的次数。但我没有得到正确的输出。这段代码有什么问题?编辑:对于输入 1、2、3,我得到的输出为 2。

标签: cstringpointers

解决方案


内循环错误且重复对

for(int j = 1; j < n; j++)

将其更改为

for(int j = i + 1; j < n; j++)

您还应该将malloc线进一步向下移动并基于输入;

int *num = malloc(sizeof(int) * n);

推荐阅读