为了账号安全,请及时绑定邮箱和手机立即绑定

回型数组

如何输出回型数组

正在回答

1 回答

/*写一个函数,在函数里把矩阵最外面的一层存到数组里,然后递归调用此函数,一层层的实现。
入口参数是数组的x,y下标,n的值和下一个要存进数组的数。
在这个函数里进行递归调用,每次传入的n值减2,当要存入的数超过n的平方,递归结束。*/

#include <stdio.h>
int a[10][10];
int sum;
void layer(int x,int y,int n,int startnum)
{
int i;
a[x][y] = startnum++;
if(startnum >= sum)
{
return;
}
for(i=0;i<n-1;i++)
{
y++;
a[x][y] = startnum++;
}
for(i=0;i<n-1;i++)
{
x++;
a[x][y] = startnum++;
}
for(i=0;i<n-1;i++)
{
y--;
a[x][y] = startnum++;
}
for(i=0;i<n-2;i++)
{
x--;
a[x][y] = startnum++;
}
if(n%2 == 0)
{
if(startnum >= sum)
{
return;
}
}
y++;
layer(x,y,n-2,startnum);
}
void main()
{
int x=0;
int y=0;
int n;
int i,j;
printf("please input the value of n:\n");
scanf("%d",&n);
getchar();
sum = n*n;
layer(x,y,n,1);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
printf("%d  ",a[i][j]);
}
printf("\n");
}
getchar();
}

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926298    人
  • 解答问题       20799    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

回型数组

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信