700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 用C语言编写一个3*3矩阵的转置 水平镜像 顺时针90度旋转 逆时针90度旋转 180度旋

用C语言编写一个3*3矩阵的转置 水平镜像 顺时针90度旋转 逆时针90度旋转 180度旋

时间:2021-08-05 01:27:43

相关推荐

用C语言编写一个3*3矩阵的转置 水平镜像 顺时针90度旋转 逆时针90度旋转 180度旋

设一个3*3d矩阵

1:求转置

int main(){int a[3][3];int len1 = sizeof(a) / sizeof(a[0]);int len2 = sizeof(a[0]) / sizeof(a[0][0]);for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){a[i][j] = i*len2 + j + 1;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");} //表示出3*3矩阵 {{123},{456},{789}}puts("*************************");int t;for (int i = 0; i < len1; ++i){for (int j = 0; j < i; ++j){t = a[j][i];a[j][i] = a[i][j]; //求转置a[i][j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]); //输出结果}puts(""); }return 0;}

2:求水平镜像

int main(){int a[3][3];int len1 = sizeof(a) / sizeof(a[0]);int len2 = sizeof(a[0]) / sizeof(a[0][0]);for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){a[i][j] = i*len2 + j + 1;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");} //表示出3*3矩阵 {{123},{456},{789}}puts("*************************");{int t;for (int i = 0; i < len1; ++i){for (int j = 0; j < len2 / 2; ++j){t = a[i][j];a[i][j] = a[i][len2 - 1 - j];//求水平镜像a[i][len2 - 1 - j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]); //输出结果}puts(""); }return 0;}

灵活利用转置和水平镜像还可以得出矩阵的 顺时针90度旋转、逆时针90度旋转、180度旋转、垂直镜像等。

顺时针90度旋转:先转置再水平镜像

int main(){int a[3][3];int len1 = sizeof(a) / sizeof(a[0]);int len2 = sizeof(a[0]) / sizeof(a[0][0]);for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){a[i][j] = i*len2 + j + 1;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");}puts("*************************");int t;for (int i = 0; i < len1; ++i){for (int j = 0; j < i; ++j){t = a[j][i];a[j][i] = a[i][j];a[i][j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2 / 2; ++j){t = a[i][j];a[i][j] = a[i][len2 - 1 - j];a[i][len2 - 1 - j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");} }

逆时针90度旋转:先水平镜像再转置

int main(){int a[3][3]; int t;int len1 = sizeof(a) / sizeof(a[0]);int len2 = sizeof(a[0]) / sizeof(a[0][0]);for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){a[i][j] = i*len2 + j + 1;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");}puts("*************************");for (int i = 0; i < len1; ++i){for (int j = 0; j < len2 / 2; ++j){t = a[i][j];a[i][j] = a[i][len2 - 1 - j];a[i][len2 - 1 - j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < i; ++j){t = a[j][i];a[j][i] = a[i][j];a[i][j] = t;}}for (int i = 0; i < len1; ++i){for (int j = 0; j < len2; ++j){printf("%-3d", a[i][j]);}puts("");}return 0;}

180度旋转:进行两次90度旋转

垂直镜像 :先180度旋转再进行水平镜像

用C语言编写一个3*3矩阵的转置 水平镜像 顺时针90度旋转 逆时针90度旋转 180度旋转 垂直镜像

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。