本帖最后由 ydy2511000 于 2016-2-4 08:31 编辑
好吧,说下我认为最简单的方法,就是从后面往前面循环,
1.先把最后一列存到一个一维数组
2.把倒数第二列给最后一列,倒数第3列给倒数第2列,....第1列给第2列,第0列给第1列(这样不会出现覆盖)
3.最后把存起来的最后一列给第一列- //
- // main.c
- // test3
- //
- // Created by ydy on 16/1/24.
- // Copyright © 2016年 ydy. All rights reserved.
- //
- #include <stdio.h>
- #define ROWS 3
- #define COLS 3
- int arr[ROWS][COLS] = {{1,2,3},{1,2,3},{1,2,3}};
- int main(int argc, const char * argv[]) {
- //输出数组,交换前
- printf("交换前\n");
- for(int i= 0 ; i < ROWS;i++)
- {
- for (int j = 0; j < COLS; j++) {
- printf("%d ",arr[i][j]);
- }
- printf("\n");
- }
- //数组列交换
- //1.先取出数列的最后
- int lastCol[COLS];
- for (int i = 0; i< ROWS;i++ ) {
- lastCol[i] =arr[i][COLS-1];
- }
- //arr[][cols-2] = arr[][cols-1],...,arr[][0] = arr[][1]
- for (int i = COLS-1; i>0; i--) { //交换列,外层控制列, 内层控制行
- for (int j = 0; j< ROWS; j++) {
- arr[j][i]=arr[j][i-1];
- }
- }
-
- //把最后一列给第一列,搞定
- for (int i = 0; i< ROWS; i++) {
- arr[i][0]=lastCol[i];
- }
- //输出
- printf("交换后\n");
- for(int i= 0 ; i < ROWS;i++)
- {
- for (int j = 0; j < COLS; j++) {
- printf("%d ",arr[i][j]);
- }
- printf("\n");
- }
-
-
-
- return 0;
- }
复制代码 |