数组左移问题,打出来不对,怎么改

img

img


运行结果第二位为什么还是原数,我有点懂是怎么错的又不是完全懂,新手求解答疑惑

(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;
}

img


如有帮助,欢迎采纳哈!

在这里插入图片描述

本人的开源项目,欢迎star支持下!!!

第22,23行改为
{
for(j=0;j<=5;j++)
printf("%d ",a[i][j]);
printf("\n");
}