一道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;
}
函数调用传参数时,数组名和指针是等价的,不要&符号