c++一个数组的函数

编写函数 int lookup(int x[],n,y)在x[0],...x[n-1]肿查找是否有等于y的元素,若有,返回第一相等元素的下标,否则返回-1.编写主函数调用它。
首先,想办法定义一个含有任意多个元素的数组我就不太会。。然后自己降低难度定义了一个含有5个元素的数组。但是还是不成功。。我疯啦。。请各位哥哥姐姐帮帮忙,看看我哪里有问题。或者帮我写一个让我这个笨蛋瞧瞧啊,谢谢了。
#include<iostream>
using namespace std;
int lookup(int x[i],n,t)
{ int x[i],n,t
for(i=0;i<n;i++)
if(x[i]==t)
return i;
return 0;
}
int main()
{
int a[5],y;
for(int i=0;i<5;i++)
cin>>a[i]>>endl;
cout<<"please input y:";
cin>>y;
cout<<lookup(a[5],5,y);
return 0;
}
这个是我的,看看能不能在这个基础上通过部分改动实现题目的要求。实在不行,就重新写咯(*^__^*) 。。。。
额。。。lookup函数最后是return -1;哦,输错了,但是还是错的

记住,这个事尝试。多看语法书
数组作为函数参数时,不要在[]里面加东西.
cin不能加endl

正确程序如下:

#include<iostream>
using namespace std;
int lookup(int x[],int n,int t)
{ int i;
for(i=0;i<n;i++)
if(x[i]==t)
return i;
return -1;
}
int main()
{
int a[5],y;
for(int i=0;i<5;i++)
cin>>a[i];
cout<<"please input y:";
cin>>y;
cout<<lookup(a,5,y);
return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-04-16
数组作为函数参数时,不要在[]里面加东西.
cin不能加endl

正确程序如下:

#include<iostream>
using namespace std;
int lookup(int x[],int n,int t)
{ int i;
for(i=0;i<n;i++)
if(x[i]==t)
return i;
return -1;
}
int main()
{
int a[5],y;
for(int i=0;i<5;i++)
cin>>a[i];
cout<<"please input y:";
cin>>y;
cout<<lookup(a,5,y);
return 0;
}
第2个回答  2009-04-16
如果硬要用数组的话,只能按照回答者(tanyuguo)所说的那样,因为数组必须在编译时确定其长度。用输入数值来确定数组长度是十分危险的(如用户输入数组的长度为-1时)。所以,如果要动态输入一组数值,可以用到Vector(容器)。代码给你贴上,自己可以研究。我不是来要你的分,只是你的情况我以前也碰过,不过当时没人帮我解决。

解释:
vector<int>::const_iterator first(指向容器起始位置);
vector<int>::const_iterator end(指向容器末端的下一位置,如数组a[5]中不存在的元素a[5]位置);
while(cin>>Temp && Temp != -1) //输入并设定结束条件;
arry.push_back(Temp); //插入值到容器,arry是vector类型的对象。

代码:
#include <iostream>
#include <vector>
using namespace std;

int lookup(vector<int>::const_iterator first,vector<int>::const_iterator end,int y)
{
int index = -1;
while(first != end)
{
index++;
if(*first++ == y)
{ return index; }
}
return -1;
}

int main()
{
int Temp,Num,Index;
vector<int> arry;
cout<<"输入任意多个数值,以-1终止输入"<<endl;
while(cin>>Temp && Temp != -1)
{ arry.push_back(Temp); }
cout<<"请输入要匹配的值:"<<endl;
cin>>Num;
cout<<"匹配下标是:"<<lookup(arry.begin(),arry.end(),Num)<<endl;
return 0;
}
第3个回答  2009-04-16
你的程序里,我看出有两处问题:
(1)int lookup(int x[i],n,t)
{ int x[i],n,t //多余的,去了
for(i=0;i<n;i++)
if(x[i]==t)
return i;
return -1;
}
(2) tanyuguo 所说,cin>>a[i]>>endl;去了endl

你要实现数组任意长度,请看下面代码
#include <iostream>
using namespace std;

int lookup(int q[],int y);

int main(){
//建立任意长度的数组
int n=0;
cout<<"请输入数组长度:"<<endl;
cin>>n;
int *p=new int[n];
int *s=p;
for(int i=0;i<n;i++)
cin>>*(s++);

int y=0;
cout<<"请输入要查找的数:"<<endl;
cin>>y;
if(lookup(p,y)==-1)
cout<<"没有你要找的数!"<<endl;
else
cout<<"你找的数是数组中第"<<lookup(p,y)<<"个数"<<endl;

delete [] p;

}

int lookup(int q[],int y)
{
for(int k=0;k<sizeof q;k++)
if(q[k]==y)
return k+1;
return -1;
}
相似回答