二维表按行列输出

在C语言中,经常用一维数组来表示二维表,假定表的大小为row*col,那么第i行第j列元素对应的下标为i*col+j,因而可以简单地将其按二维表输出,如果互换i与j,并用row代替col,那么输出的便是原二维表的转置。

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n[40], r = 5, c = 8;
    for (int i = 0; i < 40; i++)
        n[i] = i + 1;
    puts("==== HHHH ====");
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++)
            printf("%-5d", n[i*c+j]);
        puts("");
    }
    puts("==== VVVV ====");
    for (int i = 0; i < r; i++) {
        for (int j = 0; j < c; j++)
            printf("%-5d", n[j*r+i]);
        puts("");
    }
    return 0;
}

运行结果:

==== HHHH ====
1    2    3    4    5    6    7    8    
9    10   11   12   13   14   15   16   
17   18   19   20   21   22   23   24   
25   26   27   28   29   30   31   32   
33   34   35   36   37   38   39   40   
==== VVVV ====
1    6    11   16   21   26   31   36   
2    7    12   17   22   27   32   37   
3    8    13   18   23   28   33   38   
4    9    14   19   24   29   34   39   
5    10   15   20   25   30   35   40
Table of Contents