-2
我已创建此2D 21x21阵列,并将其值设置为-1。我写了它来打印地址和值,不知何故它只是在[6] [19]开始为什么?用C/Average/Max值中的随机数填充定义的2D阵列
我想要做的是在同一个数组中使用从0到100的随机数替换一些-1值。我知道我需要用函数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;
}
对于一般的函数,编译器会告诉我之前,我所预期的声明,这是“浮动总和= 0.0;”但我还没有能够解决这个问题。
对于发现最大功能我不确定我在那里做什么,我只是对它是如何做的模糊的想法...我是否在正确的方向?
谢谢!
'a [i] [j] = GetRand(0,100);'而不是'a [i] [j] = -1;' –
我不确信实际问题和您对问题的描述在这里匹配。你说它“从[6] [19]开始”。我敢打赌,这与你终端中的回滚缓冲区有关。尝试通过'more'或'less'管道输出。另一部分似乎对如何编译和链接多个源文件感到困惑。当然,你可以在你的其他源文件中包含'GetRand'的代码。除非'main'只出现在其中一个中,否则您将无法链接这两个源文件。 – paddy
我的输出不好。所以我写了一个[i] [j] = GetRand(0,100);而不是[i] [j] = -1;现在我的数组有从0到100的随机数,我的问题是我需要它有一些-1值。 例如: [2] [3] = 9 [2] [4] = - 1 [2] [5] = 23 [2] [6] = - 1 和我不知道我怎么能做到这一点 – Mimic03