一道c语言练习题碰到的问题,改了很久怎么也运行不了,是哪里出问题了?

一道c语言练习题碰到的问题,改了很久怎么也运行不了,是哪里出问题了?

问题描述:

//要求产生20个随机数,存入array1,其中能被5整除的放入array2,要求输出array2的平均数
#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int k=0;
int suijishu(int *Array1)
{
int i;
srand((unsigned)time(NULL));
for(i=0;i<20;i++)
{
Array1[i]=200+rand()%200;
}
return Array1;
}
int zhengchu(int *Array1,int *Array2)
{
int i;
for(i=0;i<20;i++)
{
if(Array1[i]%5==0)
{
Array2[k]=Array1[i];
k++;
}
}
return Array2;
}
void pingjun(int *Array2)
{
int i,sum=0;
double ave=0.0;
for(i=0;i<k;i++)
{
sum+=Array2[i];
}
ave=double(sum)/k;
printf("%d\n",ave);
}

int main()
{
int i,ave;
int array1[20]={0};
int array2[20]={0};
int suijishu(int *Array1);
int zhengchu(int *Array1,int *Array2);
void pingjun(int *Array2);
suijishu(&array1);
zhengchu(&array1,&array2);
pingjun(&array2);
return 0;
}

问题见注释,供参考:

#include<stdlib.h>
#include<stdio.h>
#include<time.h>

int k=0;

void suijishu(int *Array1)
{
    int i;
    srand((unsigned)time(NULL));
    for(i=0;i<20;i++)
    {
        Array1[i]=200+rand()%200;
    }
                                 //return Array1;
}
void zhengchu(int *Array1,int *Array2)
{
    int i;
    for(i=0;i<20;i++)
    {
       if(Array1[i]%5==0)
       {
         Array2[k]=Array1[i];
         k++;
       }
    }
                                 //return Array2;
}
void pingjun(int *Array2)
{
    int i,sum=0;
    double ave=0.0;
    for(i=0;i<k;i++)
    {
       sum+=Array2[i];
    }
    ave = (double)sum/k;       //ave=double(sum)/k;
    printf("%f\n",ave);        //printf("%d\n",ave);
}

int main()
{
    int i,ave;
    int array1[20]={0};
    int array2[20]={0};
                        //int  suijishu(int *Array1);
                        //int  zhengchu(int *Array1,int *Array2);
                        //void pingjun(int *Array2);
    suijishu(array1);   //suijishu(&array1);
    zhengchu(array1,array2);//zhengchu(&array1,&array2);
    pingjun(array2);    //pingjun(&array2);
   
    return 0;
}

函数调用传参数时,数组名和指针是等价的,不要&符号