第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;
}