程序编码之字形矩阵

时间:2014-11-23 19:05:38

标签: c matrix

最近,我遇到了一个问题,要求我编写一个以n x n模式打印zigzag矩阵的动态代码。请帮我解释下面的输出代码。

输出:

rows: 5
cols: 5

 1  2  3  4  5

10  9  8  7  6

11 12 13 14 15

20 19 18 17 16

21 22 23 24 25

到目前为止,我尝试过的代码是静态的:

#include <stdio.h>

int main(){

int arr[3][3]={1,2,3,
         4,5,6,
         7,8,9};

int i, j, k;

for(i=0; i<3; i++){
    printf("%d",arr[0][i]);
}
    printf("\n");
for(j=2; j>=0; j--){
    printf("%d",arr[1][j]);
}
printf("\n");
for(k=0; k<3; k++){
    printf("%d",arr[2][k]);
}
printf("\n");
return 0;

}

现在我想要用户说明数组的行和列来完成同样的事情。

2 个答案:

答案 0 :(得分:2)

这应该适合你:

#include <stdio.h>

int main() {

    int rows, columns;
    int rowCount, columnCount, count = 0;

    printf("Please enter rows and columns:\n>");
    scanf("%d %d", &rows, &columns);


    for(rowCount = 0; rowCount < rows; rowCount++) {

        for(columnCount = 1; columnCount <= columns; columnCount++) {

            if(count % 2 == 0)
                printf("%4d " , (columnCount+(rowCount*columns)));
            else
                printf("%4d " , ((rowCount+1)*columns)-columnCount+1);    

        }
        count++;
        printf("\n");
    }


    return 0;

}

输入:

5 5

输出:

 1  2  3  4  5
10  9  8  7  6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25

答案 1 :(得分:0)

  

k 变量的简单动态逻辑

#include <stdio.h>

int main() {

    int i,j,k=1,row,col;

    printf("Enter row and col \n>");
    scanf("%d %d", &row, &col);

    for (i = 1; i <=row; i++) 
        {
            for (j = 1; j <=col; j++) 
            {
                if(i%2==0) k--; 

                printf("%4d",k); // it have to be in center of both condition 

                if(i%2!=0) k++; 
            }
            k=k+col;
            printf("\n");

        }
    return 0;
}
  

输入:

7 7
  

输出:

   1   2   3   4   5   6   7
  14  13  12  11  10   9   8
  15  16  17  18  19  20  21
  28  27  26  25  24  23  22
  29  30  31  32  33  34  35
  42  41  40  39  38  37  36
  43  44  45  46  47  48  49