(1)打印只需要第一个循环 最后换行 就行了
(2)移位的逻辑有问题,我改了一下,塞到另一个数组里
#include<stdio.h>
int main()
{
int a[5][5];
int i,j,n,m,t;
printf("输入:\n");
for( i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
printf("m=");
scanf("%d",&m);
// for(j=0;j<m;j++)
// for(i=0;i<5;i++)
// {
// t=a[i][j];
// a[i][j]=a[i][j+1];
// a[i][5-m]=t;
// }
int b[5][5] = {0};
for (i=0; i < 5; i++)
{
for (j = 0; j < 5; j++)
{
int pos ;
if (j - m < 0) // 左移m位,没位置,重新计算
pos = 5 + j - m;
else // 左移m位,有位置
pos = j - m;
b[i][pos] = a[i][j];
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%-3d",b[i][j]);
printf("\n");
}
return 0;
}
如有帮助,欢迎采纳哈!
第22,23行改为
{
for(j=0;j<=5;j++)
printf("%d ",a[i][j]);
printf("\n");
}