中易网

c语言数字螺旋形输出方法?

答案:2  悬赏:30  
解决时间 2021-12-14 01:15
本人菜鸟,希望大神给一个螺旋输出的程序 急用
效果为:
13 14 15 16 17
12 3 4 5 18
11 2 1 6 19
↑ 10 9 8 7 20
.... 26 25 24 23 21
最佳答案
//1.1.2.2.3.3.4.4.5.5.6.6.6
#include<stdio.h>
void fun(int **a,int &i,int &j,int leag,int t)//控制方向0:←;1:↑;2:→;3:↓
{
switch(leag)
{
case 0:
i=i;
j=j-1;
a[i][j]=t;
break;
case 1:
i=i-1;
j=j;
a[i][j]=t;
break;
case 2:
i=i;
j=j+1;
a[i][j]=t;
break;
case 3:
i=i+1;
j=j;
a[i][j]=t;
break;
}
}
void main()
{
int n;
printf("输入矩阵维度(奇数):");
scanf("%d",&n);//n为奇数
int **p=new int*[n];
int i,j,s,t=1;
for(i=0;i<n;i++)//建立动态二维数组
{
int *q=new int[n];
p[i]=q;
}
int *pp=new int[2*n-1];//建立一个动态数组
for(i=0;i<2*n-2;i+=2)
{
pp[i]=t;
pp[i+1]=t;
t++;
}
pp[i]=t-1;
t=1;
i=n/2;
j=n/2;
p[i][j]=t;
for(s=0;s<2*n-1;s++)
{
while(pp[s])
{
fun(p,i,j,s%4,++t);
pp[s]--;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d\t",p[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++)//释放内存
delete[] p[i];
delete[] p;
delete[] pp;
}
全部回答
定义一个二维数组用25个数作比方 int a[5][5] 然后定义int x,y;用来控制数组a的下标 x=5/2; y=5/2; 表示从最中间开始。 用一个for循环输入数据,然后判定下一个元素是否为0,如果是,则改变方向输出,不为0,持续输出。控制方向就用下标的加减 x+ 向下 x-向上 y+向右 y-向左
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
短腿的男人为什么感觉比长腿的帅气
怎样判断新房天花板是不是混凝土现浇的?
谁有足控类动漫,漫画也行,求大神发,给采纳
分析水龙吟登建康赏心亭所用典故流露出词人怎
幽极的意思是什么?幽极的释义是什么啊?
看竹的意思是什么啊?请解释下!
“1916年9月15日,英军在进攻中首次使用坦克
丹輝的意思是什么?丹輝的释义是什么啊?
学信网今天进不去?
新买的韦氏词典被爱国人士涂改过。。。哪个环
写我想象中的工作英语作文
保宁街道办地址在哪,我要去那里办事
絶雅的意思是什么啊?请解释下!
上海闵行区浦江镇江航路378弄属于哪个街道
狐禪的意思是什么?狐禪的释义是什么啊?
推荐资讯
ipad怎么装youkuunlock
宝马和宝沃的关系是不是想大众和斯柯达一样
歎慕的意思是什么?歎慕的释义是什么啊?
男人为了性付出爱,女人为了爱付出性。
新乡县高级中学南门在什么地方啊,我要过去处
现在哪个国家学中国话
中轩的意思是什么啊?请解释下!
追摧的意思是什么?追摧的释义是什么啊?
我的克录机上有些数是52乘32乘52乘是什么意思
抚顺的捷安特专卖店在哪?
吉林白城镇赉县55岁怎么交养老保险
谁人的意思是什么?谁人的释义是什么啊?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?