我创建了这个 2D 21x21 数组,其所有值都设置为 -1。我编写它是为了打印地址和值,但不知何故它只从 [6][19] 开始,为什么?
我想要做的是将同一数组中的一些 -1 值替换为 0 到 100 之间的随机数。我知道我需要用 srand 播种它,但我在连接函数时遇到问题,因为我是 C 的初学者。
编辑1:
现在我可以打印整个数组并用随机数填充它。对于 -1 值,我直接分配了这种情况,这很好。
我现在正在尝试找到所有值的平均值和最大数量,所以我拥有的是:
#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;
}
对于平均函数,编译器告诉我在 i 之前需要一个声明,即“float sum=0.0;”但我还没能解决这个问题。
为了找到最大函数,我还不确定我在那里做什么,我只是对它是如何完成的有一个模糊的想法......我正朝着正确的方向前进吗?
谢谢!
最佳答案
非常简单:只需将 GetRand
函数的结果分配给矩阵条目即可。
关于c - 用 C/平均值/最大值中的随机数填充定义的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32345418/