C 語言 利用二維數組實現對輸入的數組進行翻轉(幫助理解對圖像翻轉編輯原理)
/*
?輸入幾行幾列數字和翻轉方式,如:
3?4?0即代表3行4列,左右翻轉;
6?5?1即代表6行5列,上下翻轉。
輸入示例:
3?4?0
_________________
1?2?3?4
5?6?7?8
9?0?1?2
輸出為:
4?3?2?1
8?7?6?5
2?1?0?9
*/
#include?
int?main(){
int?M,?N,?T;
printf("請輸入幾行幾列數字和翻轉方式,如:\n?3?4?0即代表3行4列,左右翻轉;\n?6?5?1即代表6行5列,上下翻轉。\n_________________\n");
scanf("%d?%d?%d",?&M,?&N,?&T);
printf("請輸數字,每位數字一空格間隔,每一行以回車分隔\n");
int?arr[M][N];//定義M行N列的數組并讀取每個元素的值
int?i,?j;
for(i?=?0;?i?
for(j?=?0;?j?
scanf("%d",?&arr[i][j]);
}
}
printf("輸出為:?\n");
int?c,?save,?M2?=?M?-?1,?m?=?M/2,?N2?=?N?-1,?n?=?N/2;
int?g1?=?N2,?g2?=?M2;
if(T?==?0){//左右翻轉
for(i?=?0;?i?
N2=?g1;
for(c?=?0;?c?
save?=?arr[i][c];
arr[i][c]?=?arr[i][N2];
arr[i][N2]?=?save;
N2?-=?1;
}
}
}else?if(T?==?1){//上下翻轉
for(j?=?0;?j?
M2?=?g2;
for(c?=?0;?c?
save?=?arr[c][j];
arr[c][j]?=?arr[M2][j];
arr[M2][j]?=?save;
M2?-=?1;
}
}
}
//輸出翻轉后的數組
for(i?=?0;?i?
for(j?=?0;?j?
printf("%d?",?arr[i][j]);
}
printf("\n");
}
return?0;
}