H 铺地板(选做)

背景:

    你是一名室内装潢工程队的配料员。你的伙伴们喜欢采用“之”字型的方式铺大理石地砖,图案如下:

126715
3581416
49131722
1012182123
1119202425

学了 C 语言以后,你决定编写一个程序,帮助你的同伴生成这样的图形。

输入:

    方阵N的大小。

输出

    方阵。

测试输入期待的输出时间限制内存限制额外进程
测试用例 1以文本方式显示
  1. 5↵
以文本方式显示
  1.  1  2  6  7 15↵
  2.  3  5  8 14 16↵
  3.  4  9 13 17 22↵
  4. 10 12 18 21 23↵
  5. 11 19 20 24 25↵
1秒64M0
测试用例 2以文本方式显示
  1. 3↵
以文本方式显示
  1.  1  2  6↵
  2.  3  5  7↵
  3.  4  8  9↵
1秒64M0
测试用例 5以文本方式显示
  1. 9↵
以文本方式显示
  1.  1  2  6  7 15 16 28 29 45↵
  2.  3  5  8 14 17 27 30 44 46↵
  3.  4  9 13 18 26 31 43 47 60↵
  4. 10 12 19 25 32 42 48 59 61↵
  5. 11 20 24 33 41 49 58 62 71↵
  6. 21 23 34 40 50 57 63 70 72↵
  7. 22 35 39 51 56 64 69 73 78↵
  8. 36 38 52 55 65 68 74 77 79↵
  9. 37 53 54 66 67 75 76 80 81↵
1秒64M0

#include <stdio.h>

int main() {
	int n, i = 0, j = 0, x = 0, y = 0, count = 0;
	int a[101][101] = {0};
	int vx = 1, vy = 0;
	scanf("%d", &n);
	for (i = 1; i <= n * n; i++) {
		a[x][y] = i;
		x = x + vy;
		y = y + vx;
		if (x == 0 || y == 0 || x == n - 1 || y == n - 1) {
			if (i == n * (n + 1) / 2 - 1)
				count = count + 2;
			if (i >= n * (n + 1) / 2)
				count--;
			if (count % 4 == 0)
				vx = -1, vy = 1;
			else if (count % 4 == 1)
				vx = 0, vy = 1;
			else if (count % 4 == 2)
				vx = 1, vy = -1;
			else if (count % 4 == 3)
				vx = 1, vy = 0;
			if (i < n * (n + 1) / 2 - 1)
				count++;
		}
	}
	for (i = 0; i < n; i++) {
		for (j = 0; j < n; j++)
			if (j == 0)
				printf("%2d", a[i][j]);
			else
				printf("%3d", a[i][j]);
		printf("\n");
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值