如有疑问,请使其完全*可配置并过度设计...
#include <stdio.h>
#include <stdbool.h>
void printHorizontalLine(int repeat, int width, char lineChar, char edgeChar)
{
for (int r = 0; r < repeat; ++r)
{
printf("%c", edgeChar);
for (int w = 0; w < width; ++w)
{
printf("%c", lineChar);
}
}
printf("%c\n", edgeChar);
}
void printHeader(int repeat, int width, char barChar, char fillChar, int skipAtBeginning)
{
for (int header = 0; header < repeat; ++header)
{
printf("%c", barChar);
if (header < skipAtBeginning)
{
printf("%*c", width, fillChar);
}
else
{
printf("%c%*d%c", fillChar, width - 2, header, fillChar);
}
}
printf("%c\n", barChar);
}
void printLine(int repeat, int width, char barChar, char fillChar, char headerChar, int* data)
{
for (int count = 0; count < repeat; ++count)
{
printf("%c", barChar);
if (count == 0)
{
printf("%c%*c%c", fillChar, width - 2, headerChar, fillChar);
}
else
{
printf("%c%*d%c", fillChar, width - 2, data[count - 1], fillChar);
}
}
printf("%c\n", barChar);
}
#define DIMENSION 8
#define BARCHAR '|'
#define EDGECHAR '+'
#define LINECHAR '-'
#define FILLCHAR ' '
#define CELLWIDTH 4
int main()
{
int a[DIMENSION][DIMENSION];
for (int i = 0; i < DIMENSION * DIMENSION; ++i)
{
a[i / DIMENSION][i % DIMENSION] = i;
}
printHorizontalLine(DIMENSION + 1, CELLWIDTH, LINECHAR, EDGECHAR);
printHeader(DIMENSION + 1, CELLWIDTH, BARCHAR, FILLCHAR, 1);
for (int y = 0; y < DIMENSION; ++y)
{
printHorizontalLine(DIMENSION + 1, CELLWIDTH, LINECHAR, EDGECHAR);
printLine(DIMENSION + 1, CELLWIDTH, BARCHAR, FILLCHAR, (char)('A' + y), a[y]);
}
printHorizontalLine(DIMENSION + 1, CELLWIDTH, LINECHAR, EDGECHAR);
return 0;
}
例子:
+----+----+----+----+----+----+----+----+----+
| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+----+----+----+----+----+----+----+----+----+
|一个 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+----+----+----+----+----+----+----+----+----+
|乙| 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
+----+----+----+----+----+----+----+----+----+
| C | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
+----+----+----+----+----+----+----+----+----+
| D | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
+----+----+----+----+----+----+----+----+----+
| E | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
+----+----+----+----+----+----+----+----+----+
| F | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
+----+----+----+----+----+----+----+----+----+
|克| 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 |
+----+----+----+----+----+----+----+----+----+
| H | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 |
+----+----+----+----+----+----+----+----+----+
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/ ./. 1./. 2./. 3./. 4./. 5./. 6./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。一种。/。 0./. 1./. 2./. 3./. 4./. 5./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。 B./. 6./. 7./. 8./. 9./. 10./. 11./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。 C。/。 12./. 13./. 14./. 15./. 16./. 17./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。 D./. 18./. 19./. 20./. 21./. 22./. 23./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。 E./. 24./. 25./. 26./. 27./. 28./. 29./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
/。 F。/。 30./. 31./. 32./. 33./. 34./. 35./
#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#~~~~~~#
*是的,我没有为列字符定义,但它只使用一次,很容易更改。