c语言程序帮我找一下那里错了?

帮我找一下那里错了?
编写程序,调用随机函数5*6的二维数组元素赋10~40范围的整数,求出二维数组每行元素的平均值。
#include <stdio.h>
#include <stdlib.h>
#define M 6
#define N 5
void getdata(int (*)[M]);
void lineave(int [][M],float *);
void outdata(int [N][M],float *);
main()
{
int r[N][M];
float ave[N];
getdata(r);
lineave(r,ave);
outdata(r,ave);
}
void getdata(int (*sp)[M])
{
int i,j,x;
for (i=0;i<N;i++);
{
j=0;
while(j<M)
{
x=rand()%41;
if(x>=10)
{
sp[i][j]=x;
j++;
}
}
}
}
void lineave(int s[][M],float *a)
{
int i,j;
float ave;
for(i=0;i<N;i++)
{
ave=0.0;
for(j=0;j<M;j++)
ave=ave+s[i][j];
a[i]=ave/M;
}
a[i]=ave/M;
}
void outdata(int sp[N][M],float a[])
{
int i,j;
printf("Output the result:\n");
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%4d",sp[i][j]);
printf(":%6.2f\n",a[i]);
}
putchar('\n');
}

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 6
#define N 5
void getdata(int (*)[M]);
void lineave(int [][M],float *);
void outdata(int [N][M],float *);
int main()
{
int r[N][M];
float ave[N];
srand(time(NULL));//<------------
getdata(r);
lineave(r,ave);
outdata(r,ave);
return 0;
}
void getdata(int (*sp)[M])
{
int i,j,x;
for (i=0;i<N;i++)//;//<---------------
{
j=0;
while(j<M)
{
x=rand()%41;
if(x>=10)
{
sp[i][j]=x;
j++;
}
}
}
}
void lineave(int s[][M],float *a)
{
int i,j;
float ave;
for(i=0;i<N;i++)
{
ave=0.0;
for(j=0;j<M;j++)
ave=ave+s[i][j];
a[i]=ave/M;
}
//a[i]=ave/M;//<-----------------
}
void outdata(int sp[N][M],float a[])
{
int i,j;
printf("Output the result:\n");
for(i=0;i<N;i++)//<-----------------------
{
for(j=0;j<M;j++)
printf("%4d",sp[i][j]);
     printf(":%6.2f\n",a[i]);
}
putchar('\n');
}

追问

我改了第二个和第四个就对了,我们没教过srand(time(NULL));我就没改,好像也没问题。谢谢啊X

追答

不加srand的话,你就没发现每次的"随机数"都是一样的吗

温馨提示:答案为网友推荐,仅供参考
相似回答