c语言数组顺时针转90°

  1. 先将数组上下翻转
  2. 再进行斜角转换
#include
/*void leftright(int * arr) //如果是逆时针旋转就是左右镜像→斜角翻转
{
int i=0,j=0;
for(i=0; i<3; i++)//左右镜像翻转
    {
        for(j=0; j<3/2; j++) {
            int tmp=arr[i][j];
            arr[i][j]=arr[i][3-1];
            arr[i][3-1]=tmp;
        }
    }
}*/
int main()
{
    int i,j;
    int arr[3][3];
    for(i=0; i<3; i++)
    {
        for(int j=0; j<3; j++)
        {
            scanf("%d",&arr[i][j]);
        }
    }
    printf("———初始数组如下———\n");
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%-3d", arr[i][j]);
        }
        printf("\n");
    }
    printf("———上下翻转———\n");
    for(i=0; i<3/2; i++)//上下镜像翻转
    {
        for(j=0; j<3; j++) {
            int tmp=arr[i][j];
            arr[i][j]=arr[i+3-1][j];
            arr[i+3-1][j]=tmp;
        }
    }
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%-3d", arr[i][j]);
        }
        puts("");
    }
    printf("——————————————————\n");
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < i; ++j)
        {
            int tmp = arr[j][i];
            arr[j][i] = arr[i][j];
            arr[i][j] = tmp;
        }
    }

    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%-3d", arr[i][j]);
        }
        puts("");
    }
    return 0;
}
  1. 二维数组的末行→首列
  2. 中间行→中间列
  3. 首行→末列
#include
int main( )
{
    int i,j;
    int n,m,a[100][100];
    scanf("%d %d",&n,&m);
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
            scanf("%d",&a[i][j]);
    }
    for (int i = 0; i < 3; ++i)
    {
        for (int j = 0; j < 3; ++j)
        {
            printf("%-3d", a[i][j]);
        }
        puts("");
    }
    printf("———以下是顺时针转90°———\n");
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            printf("%d ",a[n-1-j][i]);//将a[2][0]当a[0][0]输出
        }
        printf("\n");
    }
    return 0;
}

你可能感兴趣的:(笔记)