Esta pregunta requiere escribir un programa para desplazar cíclicamente cada elemento en una determinada matriz n × n cuadrada m posiciones a la derecha, es decir, transformar las columnas 0, 1, ..., n-1 en n − m, n − m +1, ..., n − 1, 0, 1, ..., n − m − 1 columnas.
Formato de entrada: la
primera línea de entrada da dos números enteros positivos myn (1≤n≤6). A continuación, hay un total de n filas, cada una con n números enteros, que representan una matriz cuadrada de orden n.
Formato de
salida : genera la matriz cuadrada movida de acuerdo con el formato de entrada: genera n filas, cada fila de n números enteros y genera un espacio después de cada entero.
Entrada de muestra:
2. 3.
1 2. 3.
4. 5. 6.
7. 8. 9
Muestra de salida:
2. 3. 1.
5. 4. 6.
8. 9. 7
Portal de colección de conjuntos de títulos
#include <stdio.h>
int main()
{
int m, n, a[6][6];
scanf("%d %d", &m, &n);
m = m % n; //考虑到m可能大于n,这里取模
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
scanf("%d", &a[i][j]);
for (int i = 0; i < n; i++)
{
for (int j = n-m; j < n; j++) //先输出右移后超出最后一列的数
printf("%d ", a[i][j]);
for (int j = 0; j < n - m; j++) //在输出右移后没有超过最后一列的数
printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}