蛇形数组:
上面的数组就叫做蛇形数组。
如何打印蛇形数组:一定不要一行一行的考虑,不然就陷入误区了。
#include<stdio.h>
#include<stdlib.h>
#define line 10
void initsarr(int arr[line][line])
{
int i1 = 0;
int j1 = 0;
int m1 = line - 1;
int n1 = line - 1;
int k = 0;
int i2;
int j2;
int m2;
int n2;
while (i1 <= m1&&j1 <= n1)
{
for (j2 = j1; j2 <= n1; j2++) //从第一行开始打印行
{
k++;
arr[i1][j2] = k;
}
for (i2 = i1 + 1; i2 <= m1; i2++) //从最后一列开始打印列
{
k++;
arr[i2][n1] = k;
}
for (n2 = n1 - 1; n2 >= j1; n2--) //从最后一行开始打印行
{
k++;
arr[m1][n2] = k;
}
for (m2 = m1 - 1; m2>i1; m2--) //从第一列开始打印列
{
k++;
arr[m2][j1] = k;
}
j1++; //准备下一圈的打印
i1++;
n1--;
m1--;
}
}
void output(int arr[line][line])
{
int i;
int j;
for (i = 0; i<line; i++)
{
for (j = 0; j<line; j++)
{
printf("%5d", arr[i][j]);
}
printf("\n\n");
}
}
int main()
{
int arr[line][line];
initsarr(arr);
output(arr);
system("pause");
return 0;
}
“之”字形打印:
上面这幅图就是“之”字形打印出来的。
如何打印“之”字形:
#include<stdio.h>
#include<stdlib.h>
#define line 10
void output(int arr[line][line])
{
int i;
int j;
for (i = 0; i<line; i++)
{
for (j = 0; j<line; j++)
{
printf("%5d", arr[i][j]);
}
printf("\n\n");
}
}
void initsarr(int arr[line][line])
{
int i = 0;
int j = 0;
int k = 0;
int i2;
int j2;
for (i = 0, j = 0; i<line&&j<line; i++, j++)
{
if (i % 2 == 0) //上三角形从左下到右上斜线的打印
{
for (i2 = i, j2 = 0; i2 >= 0 && j2 <= j; i2--, j2++)
{
k++;
arr[i2][j2] = k;
}
}
else //上三角形从右上到左下斜线的打印
{
for (j2 = j, i2 = 0; j2 >= 0 && i2 <= i; j2--, i2++)
{
k++;
arr[i2][j2] = k;
}
}
}
for (i = line - 1, j = line - 1; i >= 0 && j >= 0; i--, j--)
{
if (i % 2 != 0)
{ //下三角形从左下到右上斜线的打印
for (i2 = line - 1, j2 = line - j; i2<line&&j2<line; i2--, j2++)
{
k++;
arr[i2][j2] = k;
}
}
else
{ //下三角形从右上到左下斜线的打印
for (i2 = line - 1, j2 = line - j; i2<line&&j2<line; i2--, j2++)
{
k++;
arr[j2][i2] = k;
}
}
}
}
int main()
{
int arr[line][line];
intput(arr);
output(arr);
system("pause");
return 0;
}
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。