0

我有一个函数可以生成 0 到 2 之间的随机数,我想使用指针,但无论如何我无法执行它。首先我生成随机数,然后我想打印多维数组以查看它生成了什么我只想将随机数分配给数组(使用指针),然后再次使用指针打印它们

int **RandomizedMatrix; //integer multidimensional array        
int ***AdressOfMatrix =  &RandomizedMatrix; //assigning the adress of matrix to an integer pointer

void RandomizedMatrixGenerator(int LineNumber,int ColumnNumber,int ***AdressOfMatrix)
{            
    int i,j;
    for (i=0; i<LineNumber*ColumnNumber; i++)
    {
        **AdressOfMatrix = rand()%2;        
    }
    for (i=0; i<LineNumber; i++)
    {
        for (j=0; j<ColumnNumber; j++) 
        {                    
           printf("%d",***(AdressOfMatrix+i)+j);
        }
        printf("\n");
    }
}
4

2 回答 2

0

好的,所以你想分配随机数,你需要两个for()循环:

for (i=0; i<LineNumber*ColumnNumber; i++)
{
     **AdressOfMatrix = rand()%2;
} 

所有这些要做的就是LineNumber*ColumnNumber为矩阵的第一个元素分配一个数字的次数。如果你想这样做,你需要在分配时增加行和列。

此外,您的“随机”数字不会是随机的,因为您没有播种。这是您想要执行的操作的示例:

  srand((unsigned) time(NULL));  // Seed the random number generator

  for(row = 0; row<LineNumber; row++){
     for(col = 0; col<ColumnNumber; col++){
        ran = rand()%100;           // Generate a randome numer 1-99
        *(*(matrix+row)+col) = ran; // assign a random number to the element
     }
  }

  for(row = 0; row<LineNumber; row++) {
      for(col = 0; col<ColumnNumber; col++){
         printf("[%d]", *(*(matrix+row)+col));  //Display the random number
      }
      printf("\n");
  }

所以给定一个 4x3 矩阵,你可以得到如下输出:

[99][33][38]
[59][2][28]
[50][39][2]
[85][45][99]
于 2012-10-24T19:11:41.483 回答
0

如果我的理解是正确的,你想用 1 和 0 填充你的二维数组,这样你就可以做到这一点

    void randmtrgen(int row,int column,int **mtr){
    int i,j;
    for (i=0;i<row;i++){
        for (j=0;j<column;j++){
            mtr[row][column]=rand()%1+1;
            }
        }
    }

这将按照您的意愿填充您的矩阵,如果您不擅长方括号,我建议您不要使用解引用运算符。如果您有使用解引用运算符的冲动,您可以使用该行

    *(*(mtr+row)+column)=rand()%1+1;
于 2012-10-24T19:22:35.380 回答