考察重点:数组元素循环右移问题,我参考了这篇博客
数组元素循环右移问题
#include<stdio.h>
#include<math.h>
void reverse(int a[],int st,int end)//数组中数字逆转
{
int num = (end - st + 1) / 2;
for (int i = 1; i <= num; i++)
{
int tmp;
tmp=a[st];
a[st] = a[end];
a[end] = tmp;
end--;
st++;
}
}
int main(){
int m,n,a[6][6];
scanf("%d %d",&m,&n);
for(int i=0;i<n;i++){//存入数组
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
if(m>=n) m = m%n;//防止n-m为负数导致不对,比如m=5,n=3,只需要挪两列就行
for(int i=0;i<n;i++){//每行里面的数逆转
reverse(a[i], n - m, n - 1);
reverse(a[i], 0, n - m - 1);
reverse(a[i], 0, n - 1);
}
for(int i=0;i<n;i++){//输出
for(int j=0;j<n;j++){
printf("%d ",a[i][j]);
if(j==n-1){
printf("\n");
}
}
}
return 0;
}