网站首页 > 技术文章 正文
解题思路:
使用二维数组存放数值,t 来实现累加。通过两个循环变量来实现对螺旋方阵的实现。即改变 t 存放的位置
变量 x 控制行,变量 y 控制列。↑
index的作用↑
实现:
可以分为以下几个步骤:
1.先 x 不动,y向右边移动(增加y的值)
第一步代码实现:↓
2.第二步,y不动,x 的值增加
第二步图解
3.第三步:x 不变,y减小(和第一步刚好相反)↓
第三步代码实现:↓
4.第四步:y 的值不变,x 的值减小(与第二步相反)↓
第四步:代码实现↓
5.剩下的就是一直循环以上四个步骤,直到全部数据录入数组
细节:
1.需要注意循环退出的出口(可以利用t的取值做为出口,也可以用x与y的取值)
完整代码:↓
源代码
#include<stdio.h>
int main()
{
int n,index = 1;
//1表示y加,-1表示y减;
//2表示x加,-2表示x减
int a[100][100];
int i = 0,x = 0,y = 0,t = 1;
scanf("%d",&n);
while(1)
{
//第一步
if(index == 1)
{
for(y = i;y < n-i;y++)
{
a[x][y] = t;
t++;
}
index = 2;
t--;
y--;
}
//第二步
if(index == 2)
{
for(x = i;x < n-i;x++)
{
a[x][y] = t;
t++;
}
index = -1;
t--;
x--;
}
//第三步
if(index == -1)
{
for(y;y >= i;y--)
{
a[x][y] = t;
t++;
}
index = -2;
t--;
y++;
i++;
}
//第四步
if(index = -2)
{
for(x;x >= i;x--)
{
a[x][y] = t;
t++;
}
index = 1;
x++;
}
//出口 也可以判断t是否等于n^2
if(i >= n) break;
}
//将数组内容输出
for(x = 0;x < n;x++)
{
for(y = 0;y < n;y++)
printf("%3d",a[x][y]);
printf("\n");
}
return 0;
}
- 上一篇: 单片机主程序:为何深陷“死循环”?
- 下一篇: 硬件编程精粹·玩转LED(二)_硬件电路编程
猜你喜欢
- 2025-09-06 EXCEL退出DO LOOP循环语句|until、while
- 2025-09-06 初学者的福利,51单片机轻松入门之:流水灯的两种实现方式
- 2025-09-06 「干货」while循环语句_while循环讲解
- 2025-09-06 全彩呼吸的制作(一)_怎么制作呼吸模型
- 2025-09-06 单片机作业1:实现流水灯亮的时候蜂鸣器响,流水灯灭停止发声
- 2025-09-06 「学习」你会设置密码吗?这些密码太666了……
- 2025-09-06 硬件编程精粹·玩转LED(二)_硬件电路编程
- 2025-09-06 单片机主程序:为何深陷“死循环”?
- 2025-06-23 Qt qsort用法 完整版(解释了cmp)(qt中setshortcut的作用)
- 2025-06-23 学习笔记单片机的40个经典实验之5:报警产生器
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- asynccallback (71)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)