当前位置: 首页 > article >正文

【C语言练习题】数字螺旋方阵

题目:

已知n=5、6时的螺旋方阵如输出样例所示,请观察并得到其规律。输入一个正整数n,要求输出n×n个数字构成的螺旋方阵。

输入格式:

首先输入一个正整数T,表示测试数据的组数,然后是T组测试数据。每组测试输入一个正整数n(n≤20)。

输出格式:

对于每组测试,输出n×n的数字螺旋方阵。各行中的每个数据按4位字符宽度输出。

输入样例:

2
5
6

输出样例:

  25  24  23  22  21
  10   9   8   7  20
  11   2   1   6  19
  12   3   4   5  18
  13  14  15  16  17
  36  35  34  33  32  31
  17  16  15  14  13  30
  18   5   4   3  12  29
  19   6   1   2  11  28
  20   7   8   9  10  27
  21  22  23  24  25  26

代码实现: 

#include <stdio.h>
#include <math.h>
int main()
{
	int t, n, a[21][21], i, j, k, top, bottom, left, right, count;
	scanf("%d", &t);
	for(k = 0; k<t; k++){
		scanf("%d", &n);
		top = 0;
		bottom = n-1;
		left = 0;
		right = n-1;
		count = n*n;
		
		while(left<right&&top<bottom){
		for(i = left; i<right; i++){
			a[top][i] = count;
			count--;
		}
		for(i = top; i<bottom; i++){
			a[i][right] = count;
			count--;
		}
		for(i = right; i>left; i--){
			a[bottom][i] = count;
			count--;
		}
		for(i = bottom; i>top; i--){
			a[i][left] = count;
			count--;
		}
		top++;
		bottom--;
		left++;
		right--;
		}
		if(left == right){
			a[top][left] = 1;
		}
		for(i = 0; i<n; i++){
			for(j = 0; j<n; j++){
				printf("%4d", a[i][j]);
			}
			printf("\n");
		}
	}
	return 0;
}

注意:n为奇数和偶数时的情况不同需要分别思考。


http://www.kler.cn/a/523255.html

相关文章:

  • 1.26学习
  • Linux 4.19内核中的内存管理:x86_64架构下的实现与源码解析
  • mysql DDL可重入讨论
  • DeepSeek LLM解读
  • 开关电路汇总
  • 4.flask-SQLAlchemy,表Model定义、增删查改操作
  • 小南每日 AI 资讯 | AI将向“少样本学习”发展? | 25/01/25
  • 【Leetcode 热题 100】416. 分割等和子集
  • 在Windows下安装Ollama并体验DeepSeek r1大模型
  • LangChain概述
  • 开关电路汇总
  • AI软件栈:LLVM分析(一)
  • kafka消费者详细介绍(超级详细)
  • 02-机器学习-核心概念
  • games101-(5/6)
  • 蓝桥云课下载(jdk11、eclipse、idea)
  • 机器人抓取与操作概述(深蓝)——1
  • C++ | 红黑树
  • 2025年01月28日Github流行趋势
  • qwen2.5-vl:阿里开源超强多模态大模型(包含使用方法、微调方法介绍)
  • 怎样在PPT中启用演讲者视图功能?
  • 苍穹外卖使用MyBatis-Plus
  • WSL安装CUDA
  • 大模型本地部署流程介绍
  • 变压器的漏感
  • WSL 安装cuDNN