c语言二维数组问题

设有二维数组a[5][5]和数组b[5][5],编写程序实现将数组a中最后一行放到二维数组b的第0列,将数组a中的第0行放到b数组的最后一列中,b数组中的其他数组元素不变,求输出变化后的b数组

#include "stdio.h"

int main()

{

int a[5][5]={{1,3,5,7,9},{11,13,15,17,19},{21,23,25,27,29},{31,33,35,37,39},{41,43,45,47,49}};

int b[5][5]={{2,4,6,8,10},{12,14,16,18,20},{32,34,36,38,40},{42,44,46,48,50},{52,54,56,58,60}};

int i,j;

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

for (i=0;i<5;i++)

{

for(j=0;j<5;j++)

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

printf("\n");

}

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

for (i=0;i<5;i++)

{

for(j=0;j<5;j++)

printf("%3d ",b[i][j]);

printf("\n");

}

for (i=0;i<5;i++)

{

b[i][0]=a[4][i];

b[i][4]=a[0][i];

}

printf("变化后的b数组:\n");

for (i=0;i<5;i++)

{

for(j=0;j<5;j++)

printf("%3d ",b[i][j]);

printf("\n");

}

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-19
①若a[i]为一维数组

则有,

a[0],为数组的一个元素。

a[i]=*(&a[i]),为数组的一个元素。

a+i=&a[i],为元素a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i]无意义。

②若a[i]为二维数组

则有,

a[0],为数组的一个列指针。

a[i]=*(&a[i]),为数组的一个列指针。

a+i=&a[i],为数组的一个行指针,也是列指针a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i],表示第(i+1)行第1列的元素。

③综上所述

(a+i)、a[i]在一维数组和二维数组中的含义不同。

一维数组中

(a+i)表示地址,元素地址,数组名。

a[i]表示元素。

二维数组中

(a+i)表示行指针,列指针地址,元素地址的地址,以一行列指针为元素的数组的数组名(过渡数组名)

a[i]表示列指针。

二维公式复习

行指针:

a+i

=&&a[i][j]

列指针:*(a+i)+j=

a[i]

+j=(a+i)[j]=&a[i][j]

元素*(*(a+i)+j)=*(

a[i]

+j)=*(a+i)[j]=

a[i][j]

就这么简单,

你学会了吗?
第2个回答  2022-06-20
①若a[i]为一维数组

则有,

a[0],为数组的一个元素。

a[i]=*(&a[i]),为数组的一个元素。

a+i=&a[i],为元素a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i]无意义。

②若a[i]为二维数组

则有,

a[0],为数组的一个列指针。

a[i]=*(&a[i]),为数组的一个列指针。

a+i=&a[i],为数组的一个行指针,也是列指针a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i],表示第(i+1)行第1列的元素。

③综上所述

(a+i)、a[i]在一维数组和二维数组中的含义不同。

一维数组中

(a+i)表示地址,元素地址,数组名。

a[i]表示元素。

二维数组中

(a+i)表示行指针,列指针地址,元素地址的地址,以一行列指针为元素的数组的数组名(过渡数组名)

a[i]表示列指针。

二维公式复习

行指针:

a+i

=&&a[i][j]

列指针:*(a+i)+j=

a[i]

+j=(a+i)[j]=&a[i][j]

元素*(*(a+i)+j)=*(

a[i]

+j)=*(a+i)[j]=

a[i][j]

就这么简单,

你学会了吗?
第3个回答  2022-06-20
①若a[i]为一维数组

则有,

a[0],为数组的一个元素。

a[i]=*(&a[i]),为数组的一个元素。

a+i=&a[i],为元素a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i]无意义。

②若a[i]为二维数组

则有,

a[0],为数组的一个列指针。

a[i]=*(&a[i]),为数组的一个列指针。

a+i=&a[i],为数组的一个行指针,也是列指针a[i]的地址。

*(*(a+i))=*(*&a[i])=*a[i],

*a[i],表示第(i+1)行第1列的元素。

③综上所述

(a+i)、a[i]在一维数组和二维数组中的含义不同。

一维数组中

(a+i)表示地址,元素地址,数组名。

a[i]表示元素。

二维数组中

(a+i)表示行指针,列指针地址,元素地址的地址,以一行列指针为元素的数组的数组名(过渡数组名)

a[i]表示列指针。

二维公式复习

行指针:

a+i

=&&a[i][j]

列指针:*(a+i)+j=

a[i]

+j=(a+i)[j]=&a[i][j]

元素*(*(a+i)+j)=*(

a[i]

+j)=*(a+i)[j]=

a[i][j]

就这么简单,

你学会了吗?