看着这样的"回”形图案你晕吗?来做出它。
输入:
n。正方形的边长
输出:
边长为 n 的数字回形方阵。
测试输入 | 期待的输出 | 时间限制 | 内存限制 | 额外进程 | |
---|---|---|---|---|---|
测试用例 1 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 2 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
测试用例 5 | 以文本方式显示
|
以文本方式显示
|
1秒 | 64M | 0 |
代码如下
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
void outer_frame(int start, int end, int a, int num_sq[][10]);
int main(void)
{
int a = 1;
int* p_a = &a;
int x = 0, y = 0;
int n;
scanf("%d", &n);
int num_sq[10][10] = {0};
int start = 0, end = n - 1;
outer_frame(start, end, a,num_sq);
int counter = 0;
for (x = 0; x < n; x++) {
for (y = 0; y < n; y++) {
printf("%3d", num_sq[x][y]);
counter++;
if ((counter % n == 0) && (counter!=n*n))
putchar('\n');
}
}
return 0;
}
void outer_frame(int start, int end, int a,int num_sq[][10]) {
int x = 0, y = 0;
for (x = start, y = start; y < end+1; y++) {
num_sq[x][y] = a++;
//printf("num_sq[%d][%d] = %3d\n", x, y, num_sq[x][y]);
}
for (y = end, x = start+1; x < end+1; x++) {
num_sq[x][y] = a++;
//printf("num_sq[%d][%d] = %3d\n", x, y, num_sq[x][y]);
}
for (x = end, y = end-1; y > start; y--) {
num_sq[x][y] = a++;
//printf("num_sq[%d][%d] = %3d\n", x, y, num_sq[x][y]);
}
for (x = end, y = start; x > start; x--) {
num_sq[x][y] = a++;
//printf("num_sq[%d][%d] = %3d\n", x, y, num_sq[x][y]);
}
start += 1; end -= 1;
if (end > 0)
outer_frame(start, end, a, num_sq);
}
标签:end,int,sq,++,start,num,图形 From: https://www.cnblogs.com/alien-han/p/16905400.html