为什么我的计划中的细分错误

时间:2017-03-02 21:50:45

标签: c

#include<stdio.h>
int main()
{
    int num[5], i, s, no;
    for(i=0; i<5 ;i++)
    {
        scanf("%d",&num[i]);
    }
    printf("enter a number\n");
    scanf("%d", &no);
    s=search(no, &num[0]);
    printf("%d\n",s);
    search1(no,num);
}

int i=0;

int search(int no,int *num[i])
{
    int x,i;
    for(i=0;i<5;i++)
    {
        if(no == *num[i])
        return 1;
    }
    return 0; 
}

int search1(int no,int *num)    
{ 
    int i,x,k; 
    printf("your number %d is present in the list",no);
    printf("number\tfrequency");
    for(i=0;i<5;i++)
    {
        for(x=0;x<i+1;x++)
        {
            k=0;
            if(num[i]==num[x] &&i!=x)
            {
                k=0;
                break;
            }
            else
            {
                k=1;
                continue;
            }
        }
        if(k==1) {
            printf("%d",num[i]);
        }
    }
} 

此问题基于将数组传递给函数。我的代码正在编译,但在请求输入编号后的运行时,检查它在列表中的存在,它显示了分段错误。

1 个答案:

答案 0 :(得分:0)

将搜索功能声明更改为:

int search(int no,int *num)

更改您访问数组元素的方式:

if (no == num[i]) // Instead of *num[i]

并称之为:

s=search(no,num)

我认为你对数组,指针和参数传递有些困惑。 另外,正如您的问题下面的评论已经指出的那样,您应该采用更好的编码风格。你的代码真的很难读。

这可能是一个很好的起点: https://www.kernel.org/doc/Documentation/process/coding-style.rst