传递二维数组以运行并更改其中的值

时间:2012-02-25 20:16:55

标签: c

我有一个二维数组,我将它传递给一个函数并更改数组中的值

#define numRows 3
#define numCols 7
#define TotalNum (numRows*numCols)

int arr[numRows][numCols] = {{0,1,2,3,4,5,6}, {7,8,9,10,11,12,13},{14,15,16,17,18,19,20}};

1) random_rearrange_num(arr);

2) random_rearrange_num(arr);

void random_rearrange_num(int p[][numCols])
{
  int temp = 0,k= 0,l = 0;
  for(int i = numRows -1 ; i > 0 ; i--)
  {
    for (int j = numCols-1;j>0; j--)
    {
          k = 0 + rand()/(RAND_MAX/(2-0+1)+1);
          l= 0 + rand()/(RAND_MAX/(6-0+1)+1);
          temp = p[i][j]; 
          p[i][j] = p[k][l];
          p[k][l] = temp;
    }
  }
}

基本上,我打电话给random_rearrange_num两次随机重新排列二维数组中的数字。

但是当我尝试编译时有一些错误:

在第1点)

  

错误C2440:'初始化':无法从'int [3] [7]'转换为'int'

在第2点)

  

错误C2064:术语不评估为采用1个参数的函数

不确定这些错误是什么以及如何纠正错误。需要一些指导......

我只发布了一些代码。完整代码位于:https://codereview.stackexchange.com/questions/9419/programming-of-3-x-7-trick

2 个答案:

答案 0 :(得分:1)

在第22行(​​int row = 0,)中,您应该用分号替换逗号。 (由于您没有;,编译器认为random_rearrange_num(arr)是一个int声明)

顺便说一下,您的代码是c++。不是c

答案 1 :(得分:0)

我认为你应该写一个main()函数来调用random_rearrange_num()