如何用C语言先定义一个二维数组,并对这个数组进行转置、水平镜像、顺时针旋转90°、逆时针旋转90°、旋转180°?

**

如何用用C语言先定义一个二维数组,并对这个数组进行转置、水平镜像、顺时针旋转90°、逆时针旋转90°、旋转180°?

**
顺时针旋转90°=先转置+水平镜像
逆时针旋转90°=先水平镜像+转置
旋转180°=顺时针旋转90°两次+逆时针旋转90°两次

例如:逆时针旋转90°的程序为:

#include
int main()
{
	int t;
	int a[3][3];
	int len1 = sizeof(a) / sizeof(a[0]);
	int len2 = sizeof(a[0]) / sizeof(a[0][0]);
	for (int i = 0; i < len1; ++i)
	{
		for (int j = 0; j < len2; ++j)
		{
			a[i][j] = i*len2 + j + 1;
		}
	}


	for (int i = 0; i < len1; ++i)
	{
		for (int j = 0; j < len2; ++j)
		{
			printf("%-3d", a[i][j]);
		}
		puts("");
	}
	puts("*************************");
	
	for (int i = 0; i < len1; ++i)
	{
		for (int j = 0; j < len2 / 2; ++j)     //水平镜像
		{
			t = a[i][j];
			a[i][j] = a[i][len2 - 1 - j];
			a[i][len2 - 1 - j] = t;
		}
	}
	
	for (int i = 0; i < len1; ++i)
	{
		for (int j = 0; j < i; ++j)      //直接进行转置
		{
			int t = a[j][i];
			a[j][i] = a[i][j];
			a[i][j] = t;
		}	
	}
	

	for (int i = 0; i < len1; ++i)
	{
		for (int j = 0; j < len2; ++j)
		{
			printf("%-3d", a[i][j]);
		}
		puts("");
	}
	return 0;
}
***

                                       ## 作者:邹氏情歌cium

***

你可能感兴趣的:(编程)