代码:
#include <stdio.h>
#include <stdlib.h>
int* newMatrix(int n); //分配一块内存并存储矩阵元素
void change(int* p,int m,int n);//进行矩阵移动并打印结果
void main()
{
int s = 0;
int m,n;
scanf("%d %d",&m,&n);
int* p = newMatrix(n);
change(p,m,n);
free(p);
}
int* newMatrix(int n)
{
int* pn = (int*)malloc(n*n*sizeof(int));
int *pn1 = pn;
int i = 0;
while(i<n*n)
{
scanf("%d",pn1++);
i++;
}
return pn;
}
void change(int* p,int m,int n)
{
int* a = (int*)malloc(sizeof(int)*n); //存储单行排好序的元素
for(int i = 0; i<n; i++) //遍历每行
{
for(int j = 0; j<n; j++) //遍历一行中所有元素
{
//判断元素平移后是否超出索引值
if(j+m<n) //未超出时
{
a[j+m] = p[n*i+j];
}
else //超出时
{
if(j+m%n<n) a[j+m%n] = p[n*i+j];
else a[j+m%n-n] = p[n*i+j];
}
}
for(int k = 0; k<n; k++) //遍历排好序的单行元素
{
printf("%d ",a[k]);
}
printf("\n");
}
free(a);
}