2D矩阵的值不是正确的

时间:2018-03-27 17:44:14

标签: c arrays multidimensional-array

我是编程的新手,我正在尝试编码以获得以下模式

如果n=3

3 3 3
3 1 3
3 2 3
3 3 3

如果n=4

4 4 4 4 4
4 4 1 4 4
4 4 2 4 4
4 4 3 4 4
4 4 4 4 4

如果n=5

5 5 5 5 5
5 5 1 5 5
5 5 2 5 5
5 5 3 5 5
5 5 4 5 5
5 5 5 5 5

等等。

上述模式的代码在

之下
#include<stdio.h>
int main() {

  int n, row, col, mid, i, j, mat[50][50], midValue = 1;
  printf("Enter the value of N\n");
  scanf("%d",&n );
  if(n % 2 == 0) {

    row = col = n + 1;

  }
  else{

    col = n;
    row = n + 1;

  }
  mid = col / 2;
  printf("%d\n",mid );
  for(i = 0; i < row; i++) {

    for(j = 0; j < col; j++) {

      if(j == mid && i != 0) {

          mat[row][col] = midValue;
          midValue++;

      }
      else {

        mat[row][col] = n;

      }

    }

  }

  for(i = 0; i < row; i++) {

    for(j = 0; j < col; j++) {

      printf("%d\t",mat[row][col]);

    }
    printf("\n");

  }
  return 0;

}

但是,我所有的矩阵元素都设置为N的值。我无法弄清楚我哪里出错了。有谁可以指出错误?

1 个答案:

答案 0 :(得分:2)

您正在设置和打印矩阵的唯一元素 - mat[row][col]

ij均未用于设置值并打印值。

您需要更改:

        mat[row][col] = midValue;

        mat[i][j] = midValue;

        mat[row][col] = n;

        mat[i][j] = n;

     printf("%d\t",mat[row][col]);

     printf("%d\t",mat[i][j]);