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;
}
} 展开
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;
}
} 展开
4个回答
展开全部
怎么也没有问题啊?是不是要求修改你程序的错误啊?!
我看了一下你的程序,主要问题如下:
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;
}
我看了一下你的程序,主要问题如下:
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;
}
展开全部
令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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
已经修改可以运行,有问题我。
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;
}
已经修改可以运行,有问题我。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |