训练目的:熟悉Linux下的gcc和Makefile的使用。

要求,输入两个数,使用gcc和Makefile生成一个字母矩阵。

例如,输入4,5 ,得到一个4行5列的矩阵(字母按照顺时针排列):

A    B    C    D    E

N     O    P     Q    F

M    T     S     R     G

L    K    J     I     H

输入1,5,得到:

A     B     C     D     E

输入5,1

A

B

C

D

E

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
char c[a][b];
char c1 = 65;
int X[4] = {0, 0, -1, 1};
int Y[4] = {-1, 1, 0, 0};
int x1 = 0, y1 = 0;
int end_top = 1, end_bottom = a - 1, end_left = 0, end_right = b - 1;
int now_X = X[3], now_Y = Y[3], now_f = 3;
for (int i = 0; i < a * b; i++)
{
c[y1][x1] = c1;
if (x1 == end_right && now_f == 3)
{
now_f = 1;
now_X = X[1];
now_Y = Y[1];
end_right--;
}
if (now_f == 1 && y1 == end_bottom)
{
now_f = 2;
now_X = X[2];
now_Y = Y[2];
end_bottom--;
}
if (x1 == end_left && now_f == 2)
{
now_f = 0;
now_X = X[0];
now_Y = Y[0];
end_left++;
}
if (now_f == 0 && y1 == end_top)
{
now_f = 3;
now_X = X[3];
now_Y = Y[3];
end_top++;
}
x1 = x1 + now_X;
y1 = y1 + now_Y;
c1 = (c1 + 1) % 65 % 26 + 65;
}
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
{
printf("%c ", c[i][j]);
}
printf("\n\r");
}
return 0;
}