您的位置:

c语言二维数组移动,c语言数组的移动

本文目录一览:

c语言如何将二维数组行列循环移位

#includestdio.h

#define N 5

int main(){

    int i,j,m,n,a[N][N];

    printf("input m n:");

    scanf("%d%d",m,n);

    while(m0)m-=N;

    while(n0)n-=N;

    for(i=0;iN;i++)        

        for(j=0;jN;j++)

            a[i][j]=i*N+j+1;

    for(i=0;iN;i++){        

        for(j=0;jN;j++)

            printf("%-3d",a[(N-m+i)%N][(N-n+j)%N]);

        printf("\n");        

    }    

    return 0;

}

input m n:1 1

25 21 22 23 24

5  1  2  3  4

10 6  7  8  9

15 11 12 13 14

20 16 17 18 19

C语言二维数组移动,效果如下 {1 2 3 4 5}{6 7 8 9 10} 移动后是这样的:{0 1 2 3 4}{ 5 6 7 8 9}{10}

#includestdio.h

int main()

{int i,j,t,a[3][5]={1,2,3,4,5,6,7,8,9,10},*p;

 printf("原数组:\n");

 for(i=0;i2;i++)

 {for(j=0;j5;j++)

    printf("%4d",a[i][j]);

  printf("\n");

 }

 p=a[0][0]+10;

 for(;pa[0][0];p--)

   *p=*(p-1);

 *p=0;  

 printf("移动后的数组:\n");

 for(i=0;i3;i++)

 {for(j=0;j5;j++)

    {printf("%4d",a[i][j]);

     if(i==2)break;

  printf("\n");

 }

 return 0;

}

C语言二维数组移位问题解析?

(n+x)%lie是每4个一个循环,是为了支持输入的移位大于4的情况,因为等于4的时候相当于不用移,等于5的时候和等于1的时候是一样的。也就是说周期是lie,4

c语言用函数将二维数组往前移一个元素。注意,不要用指针

你确定题目是"采用指针数组去访问数组元素",而不是"采用数组指针去访问数组元素"

c语言对于二维数组,所有行向右移动一位,最右一行移到第一

int arr[4][4];

for (int iCol = 0; iCol 4; iCol++)

{

int iRowFirst = 0;

//记录每行第一个数

iRowFirst = arr[iCol][0];

for(int iRow = 0; iRow 3; iRow++)

{

arr[iCol][iRow] = arr[iCol][iRow+1]

}

arr[iCol][iRow] = iRowFirst;

}

C语言如何将二维数组中两个元素交换位置

可以让数组进行转置来实现,参考如下:

public class TestTransposition {

int col;

int row;

/**转换方法 将一个数组进行转置

* 原理很简单

*

* @param input

* @return

*/

public int[][] trans(int[][] input) {

int[][] output = null;

row = input.length;

if (row $amp;amp;$nbsp;0) {

col = input[0].length;

}

output = new int[col][row];

for (int i = 0; i $amp; for (int j = 0; j $amp; output[j][i] = input[i][j];

}

}

return output;

}

public static void main(String[] args){

//若是需要得到转置数组,应该调用上面的转置方法

// int[][] in={{1,2,3},{3,4,5}};

// int[][] out=new TestTransposition().trans(in);

// for (int i = 0; i $amp; // for (int j = 0; j $amp; // System.out.print(out[i][j]);

// }

// System.out.println("");

// }

//若只是想输出得到效果 这应该是可以的

int[][] in={{1,2,3},{3,4,5}};

for(int i=0;iin[0].length;i++){

for(int j=0;jin.length;j++){

System.out.print(in[j][i]);

}

System.out.println("");

}

}

/*a[2][3]----a[3][2]

* a[0][0]----a[0][0]

* a[0][1]----a[1][0]

* a[0][2]-----a[2][0]

* a[1][0]----a[0][1]

* a[1][1]----a[1][1]

* a[1][2]-----a[2][1]

*/

//故此 初步想法应是通过反向循环,即先循环列,在循环行来实现。

}