矩阵

装置(T)
#include<stdio.h>
#define M 3
void main()
{
 int a[M][M],b[M][M];
 int i,j;
 printf("输入矩阵a:\n");
 for(i=0;i<M;i++)
  for(j=0;j<M;j++)
   scanf("%d",&a[i][j]);
 printf("转置前的矩阵:\n");
 for(i=0;i<M;i++)
 {
  for(j=0;j<M;j++)
   printf("%d ",a[i][j]);
  printf("\n");
 }

 printf("\n转置后的矩阵:\n");
 for(i=0;i<M;i++)
 {
  for(j=0;j<M;j++)
  {
   b[i][j]=a[j][i];
   printf("%d ",b[i][j]);
  }
  printf("\n");
 }
}
 
#include<stdio.h>
#define n 3
void main()
{
	//int a[n][n], b[n][n];
	int a[n][n] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, b[n][n];
	int i, j, k, t;
	printf("输入矩阵a:\n");
	//for (i = 0; i<n; i++)
	//	for (j = 0; j<n; j++)
	//		scanf("%d", &a[i][j]);
	printf("旋转前的矩阵:\n");
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
			printf("%d ", a[i][j]);
		printf("\n");
	}
	printf("\n顺时针旋转90度后的矩阵:\n");
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
		{
			b[i][j] = a[n - 1 - j][i];;
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
	printf("\n顺时针旋转180度后的矩阵:\n");//相当于逆向的180度
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
		{
			//	b[i][j] = a[n-1-j][n - 1 - i];
			b[i][j] = a[n - 1 - i][n - 1 - j];
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
	printf("\n顺时针旋转270度后的矩阵:\n");//相当于逆向的90度
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
		{
			b[i][j] = a[j][n - 1 - i];;
			printf("%d ", b[i][j]);
		}
		printf("\n");


	}
	printf("\n逆序输出后的矩阵:\n");
	for (i = 0, k = n - 1; i<n, k >= 0; i++, k--)
	{
		for (j = 0, t = n - 1; j<n, t >= 0; j++, t--)
		{
			b[i][j] = a[k][t];
			printf("%d ", b[i][j]);
		}
		printf("\n");


	}


	printf("\n主对角线对称后的矩阵:\n");//相当于逆向的180度
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
		{
			b[i][j] = a[n - 1 - j][n - 1 - i]; //
			//b[i][j] = a[n - 1 - i][n - 1 - j];
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
	printf("\n次对角线对称后的矩阵:\n");//相当于专置
	for (i = 0; i<n; i++)
	{
		for (j = 0; j<n; j++)
		{
			b[i][j] = a[j][i]; //
			//b[i][j] = a[n - 1 - i][n - 1 - j];
			printf("%d ", b[i][j]);
		}
		printf("\n");
	}
	printf("\n水平镜像后的矩阵:\n");//相当于关于中垂直轴对称
	for (int i = 0; i<n; i++)//n行  
	
		for (int j = 0; j<n / 2; j++) //每一行转换(n/2)次  
		{
			//将左右两个对称的元素进行交换   自我交也可以实现
			int temp = a[i][j];
			a[i][j] = a[i][n - j - 1];
			a[i][n - j - 1] = temp;
			
			//b[i][j] = a[i][n - j - 1];
			//printf("%d ", b[i][j]);
		}
	//输出
	for (int i = 0; i<n; i++)//n行 
	{
		for (int j = 0; j < n; j++)//n行  
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}
	printf("\n垂直镜像后的矩阵:\n");//相当于关于中水平轴对称
	for (int i = 0; i<n; i++)//n行  
		for (int j = 0; j<n / 2; j++) //每一行转换(n/2)次  
		{
			//将左右两个对称的元素进行交换   自我交也可以实现
			int temp = a[j][i];
			a[j][i] = a[n - j - 1][i];
			a[n - j - 1][i] = temp;
			//b[i][j] = a[i][n - j - 1];
			//printf("%d ", b[i][j]);
		}
	//输出
	for (int i = 0; i<n; i++)//n行 
	{
		for (int j = 0; j < n; j++)//n行  
		{
			printf("%d ", a[i][j]);
		}
		printf("\n");
	}


}
//结果
输入矩阵a:
旋转前的矩阵:
1 2 3
4 5 6
7 8 9


顺时针旋转90度后的矩阵:
7 4 1
8 5 2
9 6 3


顺时针旋转180度后的矩阵:
9 8 7
6 5 4
3 2 1


顺时针旋转270度后的矩阵:
3 6 9
2 5 8
1 4 7


逆序输出后的矩阵:
9 8 7
6 5 4
3 2 1


主对角线对称后的矩阵:
9 6 3
8 5 2
7 4 1


次对角线对称后的矩阵:
1 4 7
2 5 8
3 6 9


水平镜像后的矩阵:
3 2 1
6 5 4
9 8 7


垂直镜像后的矩阵:
9 8 7
6 5 4
3 2 1
请按任意键继续. . .
java版:
package lianbiao;


public class 矩阵旋转 {


	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
        int[][] a={{1,2,3},{4,5,6},{7,8,9}};
        for(int i=0;i<3;i++)
        {
        	for(int j=0;j<3;j++)
        
        	{
        		System.out.print(a[i][j]+" ");
        	}
        	   System.out.println();
        }
        System.out.println();
     
        
        int[][] b=new int[3][3];
        //顺时针旋转90度
        /*for(int i=0;i<3;i++)
        	for(int j=0;j<3;j++)
        	{
        		b[i][j]=a[2-j][i];
        	}*/
        //逆时针旋转90度
        /*for(int i=0;i<3;i++)
        	for(int j=0;j<3;j++)
        	{
        		b[i][j]=a[j][2-i];
        	}*/
        for(int i=0;i<3;i++)
        {
        	for(int j=0;j<3;j++)
        	{
        		System.out.print(b[i][j]+" ");
        	}
            System.out.println();
        }
	}
}
http://blog.csdn.net/friendan/article/details/8811506 镜像
http://blog.csdn.net/wzy_1988/article/details/8514920 旋转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值