用C/Average/Max值中的随机数填充定义的二维数组
我创建了这个2D 21x21数组,它的所有值都设置为-1。我写它是为了打印地址和值,但不知怎的,它只从[6][19]开始。为什么 我要做的是在同一数组中用0到100的随机数替换一些-1值。我知道我需要在它的种子中加入srand,但是我在连接函数时遇到了问题,因为我是C语言的初学者 编辑1: 现在我可以打印整个数组并用随机数填充它。对于-1值,我刚刚直接赋值,在这种情况下,这是很好的 我现在尝试的是找到所有值的平均值和最大值,所以我得到的是:用C/Average/Max值中的随机数填充定义的二维数组,c,arrays,random,C,Arrays,Random,我创建了这个2D 21x21数组,它的所有值都设置为-1。我写它是为了打印地址和值,但不知怎的,它只从[6][19]开始。为什么 我要做的是在同一数组中用0到100的随机数替换一些-1值。我知道我需要在它的种子中加入srand,但是我在连接函数时遇到了问题,因为我是C语言的初学者 编辑1: 现在我可以打印整个数组并用随机数填充它。对于-1值,我刚刚直接赋值,在这种情况下,这是很好的 我现在尝试的是找到所有值的平均值和最大值,所以我得到的是: #include<stdio.h> #in
#include<stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a[21][21], i , j;
for (i = 0; i < 21; i++)
{
for ( j = 0; j < 21; j++)
{
a[i][j] = GetRand(0, 100);
a[7][15] = -1;
a[10][6] = -1;
a[13][5] = -1;
a[15][17] = -1;
a[17][17] = -1;
a[19][6] = -1;
printf("%3d" , a[i][j]);
}
printf("\n");
}
return 0;
}
// random seed
int GetRand(int min, int max);
int get() {
int i, r;
for (i = 0; i < 21; i++)
{
r = GetRand(0, 100);
printf("Your number is %d \n", r);
}
return(0);
}
int GetRand(int min, int max)
{
static int Init = 0;
int rc;
if (Init == 0)
{
srand(time(NULL));
Init = 1;
}
rc = (rand() % (max - min +1) +min);
return (rc);
}
// average
int avg()
float sum=0.0;
for(i = 0; i <= 21; i = i + 1) {
for(j = 0; j <= 21; j = j + 1){
sum = sum + a[21][21];
}
printf("The the average number is %.2f\n", sum/21);
}
//find maximum of all values
int *pv = &a[0][0];
max = min = 0;
for (i = 1; i < i*j; ++i){
if (pv[i] > pv[max])
max =i;
if (pv[i] < pv[min])
min = i;
}
printf("The max value is %d in row %d, col %d\n", pv[max], max/j, max%j);
return 0;
}
#包括
#包括
#包括
int main()
{
INTA[21][21],i,j;
对于(i=0;i<21;i++)
{
对于(j=0;j<21;j++)
{
a[i][j]=GetRand(01100);
a[7][15]=-1;
a[10][6]=-1;
a[13][5]=-1;
a[15][17]=-1;
a[17][17]=-1;
a[19][6]=-1;
printf(“%3d”,a[i][j]);
}
printf(“\n”);
}
返回0;
}
//随机种子
int-GetRand(int-min,int-max);
int get(){
int i,r;
对于(i=0;i<21;i++)
{
r=GetRand(01100);
printf(“您的号码是%d\n”,r);
}
返回(0);
}
int GetRand(int最小值,int最大值)
{
静态int Init=0;
int rc;
if(Init==0)
{
srand(时间(空));
Init=1;
}
rc=(rand()%(最大-最小+1)+min);
返回(rc);
}
//平均值
国际平均值()
浮动总和=0.0;
对于(i=0;i这很简单:只需将GetRand
函数的结果分配给矩阵项。a[i][j]=GetRand(01100);
而不是a[i][j]=-1;
我不相信实际问题与您对问题的描述匹配。您说它“从[6][19]开始”。我打赌这与终端中的滚动缓冲区有更多关系。尝试通过更多
或更少
管道输出。另一部分似乎对如何编译和链接多个源文件感到困惑。当然,您可以只在其他源文件中包含GetRand
的代码。您不会成为无法链接这两个源文件,除非main
只出现在其中一个源文件中。我对输出不满意。因此我编写了一个[i][j]=GetRand(01100);而不是[i][j]=-1;现在我的数组有0到100的随机数,我的问题是我需要它有一些-1值。例如:[2][3]=9[2][4]=-1[2][5]=23[2][6]=-1,我不知道如何才能做到这一点