C++二维数组旋转90度排序练习

#include<iostream>
#include<ctime>
using namespace std;

#define number_i 3
#define number_j 3

int **get_disorder_arr()
{
    //生成二维数组的指针
    int **arr=new int* [number_i];//arr=(int**)malloc(sizeof(int*)*number_i)
    int flag=0;
    srand((unsigned int)time(NULL));
    for (int i = 0; i < number_i; i++)
    {
        arr[i]=new int [number_j];//arr[i]=(int*)malloc(sizeof(int)*number_j)
        for (int j = 0; j < number_j; j++)
        {
            //生成1~100的随机数
            arr[i][j]=rand()%100+1;
            cout<<arr[i][j]<<"\t";
        }
        //显示生成的数组
        cout<<endl;   
    }
    return arr;
}

void rotate90_arr(int **arr,char direction)
{
    int temp[number_i][number_j];
    if (direction=='1')
    {
        for (int i = 0; i < number_i; i++)
        {
            for (int j = 0; j < number_j; j++)
            {
                temp[i][j]=arr[j][number_i-1-i];
                cout<<temp[i][j]<<"\t";
            }
        cout<<endl;
        }
    }
    if (direction=='0')
    {
        for (int i = 0; i < number_i; i++)
        {
            for (int j = 0; j < number_j; j++)
            {
                temp[i][j]=arr[number_j-1-j][i];
                cout<<temp[i][j]<<"\t";
            }
        cout<<endl;
        }
    }
}

int main()
{
    int **arr=get_disorder_arr();
    cout<<"-------------------------"<<endl;
    cout<<"输入顺时针旋转还是逆时针旋转\n(“0”:顺时针   “1”:逆时针)"<<endl;
    char direction;
    cin>>direction;
    rotate90_arr(arr,direction);

    for (int i = 0; i < number_i; i++)
    {
        delete arr[i];
    }
    delete arr;
    
    return 0;
}

 

posted @ 2020-08-17 17:46  归江渡鸟泅白浪  阅读(824)  评论(0)    收藏  举报