c++咋错啦?

来源:百度知道 编辑:UC知道 时间:2024/06/19 11:21:20
#include<iostream.h>
#include<string.h>
int ave( int [],int);
void main()
{
int i,max,sum=0,g=0,k=0;
float ave;
int a[50];
cout<<"请输入数字"<<endl;
for(i=0;;i++)
{ cin>>a[i];
g++;
if(a[i]<0)break;

}
cout<<ave(a[i],g);//提示这有错
}
int ave(int a[],int g)
{
int i,sum=0;
for(i=0;i<g;i++)
{
if(a[i]%2==0)
{
sum=sum+a[i];

}
}

return sum;
}

int ave( int [],int);
void main()
{
int i,max,sum=0,g=0,k=0;
// float ave; //这个变量没有被使用,而且和函数名一致,造成compile出错
int a[50];
cout<<"请输入数字"<<endl;
for(i=0;;i++)
{ cin>>a[i];
g++;
if(a[i]<0)break;

}
cout<<ave(a,g);//应该是a,而不是a[j],a[j]表示数组中某一个元素,而你要传入的是数组指针
}
int ave(int a[],int g)
{
int i,sum=0;
for(i=0;i<g;i++)
{
if(a[i]%2==0)
{
sum=sum+a[i];

}
}

首先将 float ave;这一句注释掉,他与你的函数重名了,编译不通过。

再次cout<<ave(a,g)就行了,你要把数组的地址传给函数,而不是传一个元素的值。