用C++编写两个重载函数,统计数组内某元素的个数。为什么我做的不对?

题目:定义两个重载函数find(a, n, x), find(a, i, n, x)分别表示数组a从下标0开始和下标i开始按下标加1顺序查找x,直到下标n结束。
要求函数返回a[j]==x并且j>=0(或i)的最小下标j值。查找失败,返回‐1。
主函数定义m元数组,输入m个元素,然后输入x,用以上两个重载函数实现统计x在数组中的出现次数。要求m用const定义。
这是我写的代码:
为什么不对?
#include<iostream>
using namespace std;
const int m=5;
int find(int a[],int n,int x)
{
int j;
for(j=0;j<n;j++)
if(a[j]==x)return j;
return -1;
}
int find(int a[],int i,int n,int x)
{
int j;
for(j=i;j<n;j++)
if(a[j]==x)return j;
return -1;
}
int main()
{
int a[m],k,x,s=0,j;
cout<<"请输入数组a的"<<m<<"个元素:"<<endl;
for(k=0;k<m;k++)cin>>a[k];
cout<<"请输入要查找的元素x:"<<endl;
cin>>x;
j=find(a,m,x);cout<<j<<endl;
while(j!=-1)
{
s++;
j=find(a,j+1,m,k);
}
cout<<"元素"<<x<<"在数组中的出现次数为"<<s<<endl;
return 0;
}

程序是对的,有个小的调用错误!
while(j!=-1)
{
s++;
j=find(a,j+1,m,k);//这里应该是j=find(a,j+1,m,x); x写成了k了,所以结果不对
}追问

………………我想撞死了……谢谢了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-17
int find(int a[],int n,int x)
{
int j;
for(j=0;j<n;j++)
if(a[j]==x)return j; // 这里的 return j; 应该修改为 return a[j];
return -1;
}追问

题目要求就是返回下标j。通过定义的两个顺序查找函数来统计x在数组中出现的次数。

追答

楼下说的是正确的,你输入错误。

while(j!=-1)
{
s++;
j=find(a,j+1,m,k);//这里应该是j=find(a,j+1,m,x); x写成了k了,所以结果不对
}

相似回答