c语言实现旋转矩阵
题目:
任意输入两个9阶以下矩阵,要求判断第二个是否是第一个的旋转矩阵,如果是,输出旋转角度(0、90、180、270),如果不是,输出-1。
要求先输入矩阵阶数,然后输入两个矩阵,每行两个数之间可以用任意个空格分隔。行之间用回车分隔,两个矩阵间用任意的回车分隔。
源码实现如下:
#include<stdio.h>
#include<string.h>
int swit(int a[][10],int b[][10],int n);
void main()
{
int n,a[10][10],b[10][10],i=0,j=0,angle;
scanf("%d",&n);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%d",&b[i][j]);
angle=swit(a,b,n);
printf("%d\n",angle);
}
int swit(int a[][10],int b[][10],int n)
{
int angle=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
if(angle==0)
{
if(a[i][j]==b[i][j])
continue;
else
angle=90;
}
if(angle==90)
{
if(a[i][j]==b[j][n-1-i])
continue;
else
angle=180;
}
if(angle==180)
{
if(a[i][j]==b[n-1-i][n-1-j])
continue;
else
angle=270;
}
if(angle==270)
{
if(a[i][j]==b[n-j-1][i])
continue;
else
return -1;
}
}
return angle;
}