关于二维数组的翻转与旋转 低端实现
2016-01-15 19:06
721 查看
先贴一段.c来观察实现结果
.h文件定义
#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 */
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- Lua中使用二维数组实例
- jquery马赛克拼接翻转效果代码分享
- C#实现字体旋转的方法
- 基于jQuery实现的旋转彩圈实例
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C#实现翻转字符串的方法
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中计算正弦的相关函数总结