问题描述
- C语言使用随机分布函数rand()%100;但是二维数组a[0][0]的值大于100,其他正常
-
#include
#include
#define M 5
#define N 4
void china(int a[][N],int b[M]);/*给二维数组随机分配数值,并求二维数组每行数值之和*/
void orange(int a[][N],int b[M]);/*将付好值得数组和求和打印出来*/void main()
{int a[M][N],b[N];
china(a,b);
orange(a,b);
}void china(int a[][N],int b[M])
{int i,j,ave;
for(i=0;i<M;i++)
{ ave=0;
for(j=0;j<N;j++)
{
a[i][j]=rand()%100;/*对数组随机分配数值*/
ave=ave+a[i][j];/*求每行数值的和*/
}
b[i]=ave;
}
}void orange(int a[][N],int b[M])
{int i,j;
for(i=0;i<M;i++)
{for(j=0;j<N;j++)
{printf("%6d",a[i][j]);/*打印二维数组*/
}
printf("%6dn",b[i]);/*打印每行数组之和*/}
}
解决方案
int a[M][N],b[M];
你b定义成N,越界了,修改b[M]结果去修改a[0][0]了
解决方案二:
main()函数里的b[n]改为b[m]。。。。。。
解决方案三:
srand(time(0));加上这一句试试
时间: 2024-11-03 00:16:53