码迷,mamicode.com
首页 > 编程语言 > 详细

蛇形数组和“之”字形打印

时间:2016-05-18 19:57:43      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:

蛇形数组:

     技术分享

技术分享

上面的数组就叫做蛇形数组

如何打印蛇形数组:一定不要一行一行的考虑,不然就陷入误区了。

技术分享

技术分享

#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;
}

蛇形数组和“之”字形打印

标签:

原文地址:http://blog.csdn.net/lf_2016/article/details/51388582

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!