用c语言编程:定义一个4*4二维矩阵数组,要求行列转换,并且分别求出主对脚线和次对角线上元素值的和。

用c语言编程:定义一个4*4二维矩阵数组,要求行列转换,并且分别求出主对脚线和次对角线上元素值的和。,第1张

#include<stdioh>

int main()

{

 int i,j,sum1=0,sum2=0;

 int d;

 int a[4][4],b[4][4];

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

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

 scanf("%d",&a[i][j]);    //转换前

     

  

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

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

        b[j][i]=a[i][j]; //转换后

   

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

   {

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

     {   

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

  if(i==j)

   sum1+=a[i][j];

   else if(i+j==3)

 sum2+=a[i][j];

}

}

      printf("\n");

      d=sum1+sum2;

       printf("%d\n",d);

  return 0;

}

望采纳,已运行

#include <stdioh>

int fun(int array[3][3])

{

int i,j,temp;

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

{

for(j=i;j<3;j++)

{

temp=array[i][j];

array[i][j]=array[j][i];

array[j][i]=temp;

}

}

return 0;

}

int main()

{

int i,j;

int array[3][3]={{100,200,300}, {400,500,600}, {700,800,900}};

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

{ for (j=0;j<3;j++)

printf("%7d",array[i][j]);

printf("\n");

}

fun(array);

printf("Converted array:\n");

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

{

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

printf("%7d",array[j][i]);

printf("\n");

}

return 0;

}

公式错了:应是b[i最大列数+j]。

一句话解释:二维数组元素地址是连续的,在内存中就是一维数组。

所以反过来也是一样,公式a[i][j]=b[i行+j]。就是按照二维数组的行列值在一维数组中取值。

比如定义二维数组a[2][3]在内存中等同于定义一维数组b[23];

而取a[1][2]值,对应一维数组下标5的元素,相当于取b[13+2](a[1][2]按连续地址数就是1行加3个元素)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12183170.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存