先貼一段.c來觀察實現結果
#define H 4 //宏定義- 行數
#define L 4 //宏定義- 列數
#include"stdio.h"
#include"arraryTwoDis.h"
//函數聲明
int main(int argc, const char * argv[])
{
//定義2維數組
int arraryTwoDis[H][L]={
{4,3,2,1},
{5,4,5,6},
{6,3,2,7},
{7,8,9,8}};
_arraryTwoDisFlipUpDown(arraryTwoDis);//2維數組上下翻轉
_arraryTwoDisFlipL(arraryTwoDis);//2維數組沿左對角線翻轉
_arraryTwoDisFlipR(arraryTwoDis);//2維數組沿右對角線翻轉
_arraryTwoDisRevolveL(arraryTwoDis);//2維數組向左旋轉
_arraryTwoDisSequence(arraryTwoDis);//二維數組整體冒泡排序
_arraryTwoDisUp(arraryTwoDis);//2維數組正序遍歷
_arraryTwoDisDowm(arraryTwoDis);//2維數組逆序遍歷
printf("正序遍歷:\n");
return 0;
}
.h文件定義
//
// arraryTwoDis.h
// 數組與指針練習
//
// 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維數組正序遍歷
void _arraryTwoDisDowm(int arrary[H][L]);//2維數組逆序遍歷
void _arraryTwoDisFlipUpDown(int arrary[H][L]);//2維數組上下翻轉
void _arraryTwoDisFlipL(int arrary[H][L]);//沿左對角線翻轉2維數組
void _arraryTwoDisFlipR(int arrary[H][L]);//沿右對角線翻轉2維數組
void _arraryTwoDisRevolveL(int arrary[H][L]);//向右旋轉二維數組
//2維數組正序遍歷
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維數組逆序遍歷
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");
}
}
//維數組上下翻轉
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;
}
}
}
//沿左對角線翻轉2維數組
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;
}
}
}
//沿右對角線翻轉2維數組
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;
}
}
}
//向左旋轉二維數組
void _arraryTwoDisRevolveL(int arrary[H][L])
{
//復制數組
int arraryCopy[H][L];
for (int x=0; x<H; x++) {
for (int y=0; y<L; y++) {
arraryCopy[x][y]=arrary[x][y];
}
}
//右旋轉運算
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 */