解题思路:
主对角线好确定

法1其余手写,略

法2循环赋值转置。

if(j==i) continue;

           arr2[3*i+j]=arr1[3*j+i];//i+1是行,j+1是列。互换即可实现转置

注意事项:
暂时不明
参考代码:

法1

#include

using namespace std;

int main()

{

   int arr1[9]={};

   int arr2[9]={};

   int num;

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

   {

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

       {

           cin>>num;

           arr1[3*i+j]=num;

           if(j==i) arr2[3*i+j]=num;//主对角线

       }

   }

   //手写自转置

   arr2[1]=arr1[1*3+0];

   arr2[2]=arr1[2*3+0];

   arr2[3]=arr1[1];

   arr2[5]=arr1[2*3+1];

   arr2[6]=arr1[2];

   arr2[7]=arr1[1*3+2];

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

   {

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

       {

           cout<<arr2[3*i+j]<<' ';

       }

       cout<<endl;

   }

   

   return 0;

}


法2

#include<iostream>

using namespace std;

int main()

{

   int arr1[9]={};

   int arr2[9]={};

   int num;

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

   {

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

       {

           cin>>num;

           arr1[3*i+j]=num;

           if(j==i) arr2[3*i+j]=num;//主对角线

       }

   }

   //循环转置赋值arr2

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

   {

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

       {

           if(j==i) continue;

           arr2[3*i+j]=arr1[3*j+i];

        }

   }

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

   {

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

       {

           cout<<arr2[3*i+j]<<' ';

       }

       cout<<endl;

   }

   

   return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论