#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]);
}
}
}
此问题基于将数组传递给函数。我的代码正在编译,但在请求输入编号后的运行时,检查它在列表中的存在,它显示了分段错误。
答案 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