求高手指点:我的程序错哪了???

来源:百度知道 编辑:UC知道 时间:2024/06/24 12:06:27
编写一函数 saver(a,n) ,其中 a 是一维整型数组,n 是a 的数组长度,要求通过全局变量pave 和nave 将a 数组中正数的平均值和负数 的平均值传递给调用函数。

下面是我的程序:
#include "stdafx.h"
float pave=0,nave=0;
void saver(int a[],int m)
{
int i,sump=0,sumn=0,p=0,n=0;
float pave,nave;
for(i=0;i<=m-1;i++)
{
if a[i]>0
{
sump=sump+a[i];
p++;
}
if a[i]<0
{
sumn=sumn+a[i];
n++;
}
}
if(p>0)
{
pave=sump/p;
printf("pave=%f",pave);
}
if(n>0)
{
nave=sumn/n;
printf("nave=%f",nave);
}
}
main()
{
int i,m,a[];
printf("please input n\n");
scanf("%d",&m);
printf("please input a[]\n");
for(i=0;i<=m-1;i++)
scanf("%d",&a[i]);
saver(a,m);
}
调试时报错如下:
错误 1 error C2061: syntax error : identifier 

#include <stdio.h>
#include <malloc.h>

float pave=0,nave=0;

void saver(int *a,int m)
{
int i,sump=0,sumn=0,p=0,n=0;
float pave,nave;
for(i=0;i<=m-1;i++)
{
if (a[i]>0)
{
sump=sump+a[i];
p++;
}
if (a[i]<0)
{
sumn=sumn+a[i];
n++;
}
}
if(p>0)
{
pave=(float)sump/p;
printf("pave=%f",pave);
}
if(n>0)
{
nave=(float)sumn/n;
printf("nave=%f",nave);
}
}
int main()
{
/* a数组的定义有问题,如果开始无法确定数组的大小,可动态分配空间 */
int i,m, *a;
printf("please input n\n");
scanf("%d",&m);
a = (int *)malloc(sizeof(int) * m);

printf("please input data\n");
for(i=0;i<=m-1;i++)
scanf("%d",&a[i]);
saver(a,m);

free(a);
}

1,2,都是说a的定义有问题