编写函数 void shift_solit_matrix(int m, int n, int *matrix, int number); 将 m × n 维的矩阵进行一条龙循环移位。移位过程中,矩阵的相邻行相接,构成 “一条龙”(第一行与第二行尾相连,第二行与第三行首相连,依此类推)。使用指针方法编程。
输入形式为: m(行数 0 < m < 100) n(列数 0 < n < 100) matrix 矩阵元素 m 行 n 列(同一行的元素以空格隔开) number(位移大小,负数表示向左循环移位,正数表示向右循环移位)
输出移位后的矩阵。若输入m,n不符合要求,则输出 “ERROR”。
输入
共 m+3 行: m(行数 0 < m < 100) n(列数 0 < n < 100) matrix 矩阵元素 m 行 n 列(同一行的元素以空格隔开) number(位移大小,负数表示向左循环移位,正数表示向右循环移位)
voidreverse(int *p, int len){ int *begin = p; int *end = p + len - 1;
while (begin < end) { int t = *begin; *begin = *end; *end = t;
begin++; end--; } }
intmain(){ int data[30000]; int m, n, k, *p = data+10000, p_idx = 0; scanf("%d%d", &m, &n);
for (int i = 0; i < m; ++i) { for (int j = 0; j < n; ++j, p_idx++) { int r = scanf("%d", p+p_idx); if (r == EOF) { printf("ERROR"); return0; } } if (i % 2) { reverse(p+(i*n), n); } } scanf("%d", &k); k %= (m * n);