训练目的:熟悉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; }
|