装置(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 旋转