C语言问题,要求调用函数,在数组list中查找X,若找到就返回相应的下标,否则返回-1

#include<stdio.h>voidmain(){intsearch(intlist[],intn,intx);intlist[10],x,i;printf("En... #include<stdio.h>
void main()
{

int search(int list[],int n,int x);
int list[10],x,i;
printf("Enter x:\n");
scanf("%d",&x);

printf("Enter %d integers:\n",10);
for(i=0;i<10;i++)
scanf("%d",&list[i]);
search(list,10,x);
if(search(list,10,x))
printf("%d",i);

else
printf("No found");
}
int search(int list[],int n,int x)
{
int i;
for(i=0;i<10;i++)
{
if(list[i]==x)
return i;
else
return -1;
}
}
展开
 我来答
百度网友dad142f
2009-12-13 · TA获得超过9906个赞
知道大有可为答主
回答量:1548
采纳率:100%
帮助的人:1895万
展开全部
怎么也没有问题啊?是不是要求修改你程序的错误啊?!
我看了一下你的程序,主要问题如下:
main函数中,调用函数的时候即 search(list,10,x);这个语句中是不能获得i的值的,因为函数值传递是单向的,不能有形参传递到实参,需要i=search(list,10,x); 即将调用函数的返回值赋给i,这样i才会得到你需要的返回值。另外if(search(list,10,x))这一句也是不正确的,因为如果按照这个的话,search(list,10,x)为-1的时候它也是真,那么也不会输出No found。
定义函数中:
if语句内:你最好把return的值赋给一个变量这样好控制,譬如说t,另外你原句中return后面应该有break语句结束循环的,要不然它会一直找下去哈哈……

Ps:下面是修改后的程序(供参考)
#include<stdio.h>
void main()
{

int search(int list[],int n,int x);
int list[10],x,i;
printf("Enter x:\n");
scanf("%d",&x);

printf("Enter %d integers:\n",10);
for(i=0;i<10;i++)
scanf("%d",&list[i]);
i=search(list,10,x);
if(search(list,10,x)!=-1)
printf("%d",i);

else
printf("No found");
}
int search(int list[],int n,int x)
{
int i,t;
for(i=0;i<10;i++)
{
if(list[i]==x)
{
t=i;break;
}
else
t=-1;
}
return t;
}
百度网友672af83
2009-12-13 · TA获得超过1749个赞
知道小有建树答主
回答量:753
采纳率:80%
帮助的人:701万
展开全部
令i=search(list,10,x); (search有返回值)
if(search(list,10,x))错了找不到时if(-1)成立会执行printf("%d",i);
if(0)才不执行
for(i=0;i<10;i++)
{
if(list[i]==x)
return i;
else
return -1;
}错了 这样相当于执行
for(i=0;i<10;i++)
{
if(list[0]==x)
return 0;
else
return -1;
}
因为search()只能返回一个值;只能返回一个值后就结束;

#include<stdio.h>
void main()
{

int search(int list[],int n,int x);
int list[10],x,i;
printf("Enter x:\n");
scanf("%d",&x);

printf("Enter %d integers:\n",10);
for(i=0;i<10;i++)
scanf("%d",&list[i]);
i=search(list,10,x);
if(i==-1) printf("No found");
else printf("%d",i);

}
int search(int list[],int n,int x)
{
int i;
for(i=0;i<10;i++)
{ if(list[i]==x)
return i;}
return -1;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huifeng00
2009-12-13 · TA获得超过5235个赞
知道大有可为答主
回答量:808
采纳率:0%
帮助的人:710万
展开全部
#include<stdio.h>
void main()
{

int search(int list[],int n,int x);
int list[10],x,i;
printf("Enter x:\n");
scanf("%d",&x);

printf("Enter %d integers:\n",10);
for(i=0;i<10;i++)
scanf("%d",&list[i]);
i=search(list,10,x);
if(i!=-1)//判断是否找到
printf("%d",i);

else
printf("No found");
}
int search(int list[],int n,int x)
{
int i;
for(i=0;i<10;i++)
{
if(list[i]==x)
return i;
}
return -1;
}
已经修改可以运行,有问题我。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tjw408797664
2009-12-13 · TA获得超过1153个赞
知道小有建树答主
回答量:1042
采纳率:0%
帮助的人:704万
展开全部
#include<stdio.h>
int search(int list[],int n,int x);
void main()
{
int list[10],x,i;
printf("Enter x:\n");
scanf("%d",&x);

printf("Enter %d integers:\n",10);
for(i=0;i<10;i++)
scanf("%d",&list[i]);
//search(list,10,x);
//if(search(list,10,x))
printf("%d\n",search(list,10,x));
}

int search(int list[],int n,int x)
{
int i;
int flag;
for(i=0;i<10;i++)
{
if(list[i]==x)
{
flag=i;
break;
}
else
flag=-1;
}
return flag;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式