C语言程序改错。

在数组中查找指定元素。输入一个正整数n(1<n≤10),然后输入n个整数存入数组a中。再输入一个整数x,在数组a中查找x,如果找到则输出相应的下标,否则输出“Not found”。要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应下标,否则返回-1。
我的是
#include<stdio.h>
int main()
{
int search(int list,int n,int x);
int a[10],n,x,i;
printf("Input n:");
scanf("%d",&n);
printf("Input %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Input x:");
scanf("%d",&x);
if(search(a[10],n,x)==-1)
printf("Not found\n");
else
printf("Index=%d\n",search(a[10],n,x));
return 0;
}

int search(int list[10],int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(list[i]==x)
return i;
}
return -1;
}

#include<stdio.h>
int main()
{
//int search(int list,int n,int x);
int search(int *list,int n,int x);
int a[10],n,x,i;
printf("Input n:");
scanf("%d",&n);
printf("Input %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("Input x:");
scanf("%d",&x);
if(search(a,n,x)==-1)
printf("Not found\n");
else
printf("Index=%d\n",search(a,n,x));
return 0;
}

int search(int *list,int n,int x)
{
int i;
for(i=0;i<n;i++)
{
if(list[i]==x)
return i;
}
return -1;
}

看来 调用函数不会写啊 !

追问

为什么那里要用指针变量??为什么要这么改啊??

追答

search(list, n, x)

list 是整个数组 ,
search(a[10],n,x) a[10] 是什么 ? 是 数组a 的第 10个元素 ,明显不一致啊!!

如何调用整个数组呢 ?
就像我写的那个程序

追问

哦……这样啊……那么为什么list 要改成*list啊……

追答

search(int *list,int n,int x);
如果我写 int list 那么 list 不是很你后面的 int n,int x是一样的,只是一个整形的元素,而不是一个数组?

如果想要list 是数组,就像我那样

温馨提示:答案为网友推荐,仅供参考
相似回答