我的 IT 学校的任务有问题。问题是:将数组的框架向左转动。输入:首先获取测试次数(t)。然后对于每个测试得到 l 和 k(行和列),3 <= l,k <= 100。然后用用户的数字填充矩阵。
Input:
1
3 3
1 2 3
4 5 6
7 8 9
Output:
2 3 6
1 5 9
4 7 8
到目前为止我的代码:
#include<iostream>
#include<cstdio>
#include<cstdlib>
int main()
{
int t, w, k;
int tab[101][101];
int t1[101], t2[101], t3[101], t4[101];
scanf_s("%d", &t);
for (int i = 0; i < t; i++) {
scanf_s("%d %d", &w, &k);
for (int j = 0; j < w; j++) {
for (int x = 0; x < k; x++) {
scanf_s("%d", &tab[j][x]);
if (j == 0) { //1 linia
t1[x] = tab[j][x];
}
if (j + 1 == w) { //3 linia
t2[x] = tab[j][x];
}
if (x == 0) { //2 linia
t3[j] = tab[j][x];
}
if (x + 1 == k) { //4 linia
t4[j] = tab[j][x];
}
}
}
printf("\n");
}
for (int j = 0; j < w; j++) {
for (int x = 0; x < k; x++) {
if (j == 0) {
if (x == 0) {
tab[j][x] = t3[1];
}
else if (x + 1 != k-1) {
tab[j][x] = t1[j + 1];
}
else if (x + 1 == k-1) {
tab[j][x] = t4[1];
}
}
if (j + 1 == w) {
if (x == 0) {
tab[j][x] = t3[k - 2];
}
else if (x + 1 == k - 1) {
tab[j][x] = t4[w-2];
}
else if (x + 1 != k-1) {
tab[j][x] = t2[x + 1];
}
}
}
}
for (int j = 0; j < w; j++) {
for (int x = 0; x < k; x++) {
printf("%d ", tab[j][x]);
}
printf("\n");
}
printf("\n");
system("pause");
return 0;
}
我知道我做错了重新定位。我现在尝试了 5 种不同的方法。如果有人会告诉我一种迭代表格的方法,将值向左移动。我将感激不尽。还要记住,l 不必等于 k。