#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a;
while(cin>>n) //输入矩阵的维度
{
string s; //用来保存存入的数字矩阵
char c='a'; //下面会有解释
for(int i=1; i<=n; i++)
{
for(int j=1; j<=n; j++)
{
cin>>a; //输入数字
if(n==1) //如果输入的维度为一则跳出 直接输出
break;
string temp;
while(a) //将int变量转换为串类型
{
temp+=a%10+'0';
a/=10;
}
reverse(temp.begin(),temp.end()); //
s+=temp;
s+=c; //用以分割数字 比如 1 2 3 变为1a2a3a
}
}
if(n==1) //直接输出
{
cout<<a<<endl;
continue;
}
int j=0;
int k=1,num=0;
int len=s.size();
for(int i=0; i<len; i++)
{
string temp;
while(i<len&&s[i]!='a') //再将变为字符串的数字组合拆分为单个数字
temp+=s[i],i++;
if(s[i]=='a') //整个函数中‘a’的作用不止是充当存储串中的空格字符 更是在输出部分的标志
j++; //j用来表示输入的次序
if(j%n==k) //判断是不是原来第一列的数字 将其输入到第一行
{
cout<<temp<<" ";
num++;
}
if(num==n)
{
num=0;
j=0;
cout<<endl;
i=-1;
if(k==0)
break;
k=(k+1)%n;
}
}
}
return 0;
}
运行结果:
![70e9a377b785b2a425a7458f3ed506dc.png](https://img-blog.csdnimg.cn/img_convert/70e9a377b785b2a425a7458f3ed506dc.png)
链接:
矩阵转置__牛客网www.nowcoder.com![88be15e059af8f09da1807e2fd32cc2d.png](https://img-blog.csdnimg.cn/img_convert/88be15e059af8f09da1807e2fd32cc2d.png)
来源:牛客网