我希望矩阵向右旋转。它适用于正方形矩阵,但我也应适用于非正方形矩阵。
我试过旋转它,但我想不出一种方法使其在非方形矩阵上工作。
#include <stdio.h>
#define x 7
#define y 7
int build() {
int i = 0, k = 0;
int matrix[x][y];
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
matrix[i][k] = i;
}
}
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
printf("\t%d", matrix[k][i]);
}
printf("\n");
}
return matrix[i][k];
}
int turn()
{
int i = 0, k = 0;
int matrix[x][y];
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
matrix[i][k] = i;
}
}
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
printf("\t%d", matrix[i][k]);
}
printf("\n");
}
}
int main()
{
build();
printf("\t\n");
turn();
}
我希望它适用于不同的变量,例如x = 5和y = 7。
我的想法是将矩阵旋转90度。
从
0 0 0 0
1 1 1 1
2 2 2 2
至
2 1 0
2 1 0
2 1 0
2 1 0
只需对您的代码进行一些修改
#include <stdio.h>
#define x 3
#define y 4
int build() {
int i = 0, k = 0;
int matrix[x][y];
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
matrix[i][k] = i;
}
}
for (i = 0; i < x; ++i) {
for (k = 0; k < y; ++k) {
printf("\t%d", matrix[i][k]);
}
printf("\n");
}
return matrix[i][k];}
//for right turn you will have to modify the loop like this
int r_turn()
{
int i = 0, k = 0;
int matrix[x][y];
for(i=0; i<y; i++) //for outer loop, take y, because you're rotating
//loop , and y will come before x
{
for(k=x-1; k>=0; k--) //thereby, x goes after y
{
matrix[k][i] = k;
}
}
for(i=0; i<y; i++) //printing matrix in the same way we wrote
{
for(k=x-1; k>=0; k--) //here, k will start from k because
//index starts from 0
{
printf("\t%d", matrix[k][i]);
}
printf("\n");
}
}
int main()
{
build();
printf("\t\n");
r_turn();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句