悠游


私信TA

用户名:uq_87643911115

访问量:6787

签 名:

你好

等  级
排  名 42
经  验 12783
参赛次数 0
文章发表 206
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

大家好!我是糕手

解题思路:

写代码要逐渐习惯模块化了,这里用四个函数来实现矩阵的四种可能性
注意事项:

参考代码:

#include<stdio.h>
int unchange(int n,char a1[20][20],char a2[20][20])//保持原始矩阵,不变幻
{
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(a1[i][j]!=a2[i][j])
            {
                return 0;
            }
        }
    }
    return 4;
}
int cw(int n,char a1[20][20],char a2[20][20])//顺时针旋转90度
{
    char a3[20][20];
    for(int i=0;i<n;i++)
    {
        for(int j=0,k=n-1;j<n&&k>=0;j++,k--)
        {
            a3[i][j]=a1[k][i];
        }
    }
    if(!unchange(n,a2,a3))
    return 0;
    return 1;
}
int ccw(int n,char a1[20][20],char a2[20][20])//逆时针旋转90度
{
    char a3[20][20];
    for(int i=0;i<n;i++)
    {
        for(int j=0,k=n-1;j<n&&k>=0;j++,k--)
        {
            a3[j][i]=a1[i][k];
        }
    }
    if(!unchange(n,a2,a3))
    return 0;
    return 2;
}

int m(int n,char a1[20][20],char a2[20][20])//中央元素不变,其他元素与“以中央元素为中心的对应元素”互换
{
    char a3[20][20];
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            
                a3[n-1-i][n-1-j]=a1[i][j];
            
        }
    }
    if(!unchange(n,a2,a3))
    return 0;
    return 3;
}
int main()
{
	int n;
	scanf("%d",&n);
	char a1[20][20],a2[20][20];//这里空间不能用n啊,你问我,我也不知啊,其他平台可以
	for(int i=0;i<n;i++)
	{
	    for(int j=0;j<n;j++)
	    {
	        scanf("%s",&a1[i][j]);//用%s更好用些,不然要小心空格和换行符,可以用getchar收取
	    }
	    
	}
	for(int i=0;i<n;i++)
	{
	    for(int j=0;j<n;j++)
	    {
	        scanf("%s",&a2[i][j]);
	    }
	    
	}
	
    if(cw(n,a1,a2))
	{
	    printf("1");
	}
	else if(ccw(n,a1,a2))
	{
	    printf("2");
	}
	else if(m(n,a1,a2))
	{
	    printf("3");
	}
	else if(unchange(n,a1,a2))
	{
	    printf("4");
	}
	else
	{
	    printf("5");
	}
	return 0;
}


 

0.0分

1 人评分

  评论区

为什么在vc上不能运行
2023-12-03 22:14:27
  • «
  • 1
  • »