01 - 關(guān)于二維數(shù)組的翻轉(zhuǎn)與旋轉(zhuǎn) 低端實現(xiàn)

先貼一段.c來觀察實現(xiàn)結(jié)果

#define H 4 //宏定義- 行數(shù)
#define L 4 //宏定義- 列數(shù)

#include"stdio.h"
#include"arraryTwoDis.h"
//函數(shù)聲明

int main(int argc, const char * argv[])
{
    //定義2維數(shù)組
    int arraryTwoDis[H][L]={
        {4,3,2,1},
        {5,4,5,6},
        {6,3,2,7},
        {7,8,9,8}};
    _arraryTwoDisFlipUpDown(arraryTwoDis);//2維數(shù)組上下翻轉(zhuǎn)
    _arraryTwoDisFlipL(arraryTwoDis);//2維數(shù)組沿左對角線翻轉(zhuǎn)
    _arraryTwoDisFlipR(arraryTwoDis);//2維數(shù)組沿右對角線翻轉(zhuǎn)
    _arraryTwoDisRevolveL(arraryTwoDis);//2維數(shù)組向左旋轉(zhuǎn)
    _arraryTwoDisSequence(arraryTwoDis);//二維數(shù)組整體冒泡排序
    _arraryTwoDisUp(arraryTwoDis);//2維數(shù)組正序遍歷
    _arraryTwoDisDowm(arraryTwoDis);//2維數(shù)組逆序遍歷
    printf("正序遍歷:\n");
    return 0;
}
.h文件定義
//
//  arraryTwoDis.h
//  數(shù)組與指針練習(xí)
//
//  Created by 1 on 16/1/13.
//  Copyright ? 2016年 bigL.com. All rights reserved.
//

#ifndef arraryTwoDis_h
#define arraryTwoDis_h
void _arraryTwoDisUp(int arrary[H][L]);//2維數(shù)組正序遍歷
void _arraryTwoDisDowm(int arrary[H][L]);//2維數(shù)組逆序遍歷
void _arraryTwoDisFlipUpDown(int arrary[H][L]);//2維數(shù)組上下翻轉(zhuǎn)
void _arraryTwoDisFlipL(int arrary[H][L]);//沿左對角線翻轉(zhuǎn)2維數(shù)組
void _arraryTwoDisFlipR(int arrary[H][L]);//沿右對角線翻轉(zhuǎn)2維數(shù)組
void _arraryTwoDisRevolveL(int arrary[H][L]);//向右旋轉(zhuǎn)二維數(shù)組


//2維數(shù)組正序遍歷
void _arraryTwoDisUp(int arrary[H][L])
{
    printf("正序遍歷:\n");
    for (int i = 0; i<H; i++) {
        for (int j = 0; j<L; j++) {
            printf("%d ",arrary[i][j]);
        }
        printf("\n");
    }
}
//2維數(shù)組逆序遍歷
void _arraryTwoDisDowm(int arrary[H][L])
{
    printf("逆序遍歷:\n");
    for (int i = H-1; i>=0; i--) {
        for (int j = L-1; j>=0; j--) {
            printf("%d ",arrary[i][j]);
        }
        printf("\n");
    }
}

//維數(shù)組上下翻轉(zhuǎn)
void _arraryTwoDisFlipUpDown(int arrary[H][L])
{
    int temp;
    int i,j;
    for (i=0; i<(H/2); i++) {
        for (j=0; j<L; j++) {
            temp = arrary[i][j];
            arrary[i][j]=arrary[H-i-1][j];
            arrary[H-i-1][j]=temp;
        }
    }
    
}

//沿左對角線翻轉(zhuǎn)2維數(shù)組
void _arraryTwoDisFlipL(int arrary[H][L])
{
    int temp;
    int i,j;
    for (i=0; i<H; i++) {
        for (j=L-1; j>i-1; j--) {
            temp = arrary[i][j];
            arrary[i][j]=arrary[j][i];
            arrary[j][i]=temp;
        }
    }
}

//沿右對角線翻轉(zhuǎn)2維數(shù)組
void _arraryTwoDisFlipR(int arrary[H][L])
{
    int temp;
    int i,j;
    for (i=0; i<H; i++) {
        for (j=0; j<H-i; j++) {
            temp = arrary[i][j];
            printf("%d\n",temp);
            arrary[i][j]=arrary[H-1-j][L-1-i];
            arrary[H-1-j][L-1-i]=temp;
        }
    }
}

//向左旋轉(zhuǎn)二維數(shù)組
void _arraryTwoDisRevolveL(int arrary[H][L])
{
    //復(fù)制數(shù)組
    int arraryCopy[H][L];
    for (int x=0; x<H; x++) {
        for (int y=0; y<L; y++) {
            arraryCopy[x][y]=arrary[x][y];
        }
    }
    //右旋轉(zhuǎn)運算
    for (int j = 0; j<L; j++) {
        for (int i = 0; i<H; i++) {
            arrary[i][j]=arraryCopy[H-1-j][i];
        }
    }
}

#endif /* arraryTwoDis_h */

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容