c++ 输入一个4*4的矩阵。转置后输出结果 (转置就是行数列与列数列元素对换)

如题所述

// Note:Your choice is C++ IDE
#include <iostream>
using namespace std;
int jzzz(int **a,int m,int n)
{
int **b=new int *[n];
for(int i=0;i<n;i++)
{
b[i]=new int [m] ;
}
for( i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
b[j][i]=a[i][j];
}
}

cout<<"倒置的矩阵为:"<<endl;
for(i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cout<<b[i][j]<<" ";
}
cout<<endl;
}
//删除a数组
for( i= 0; i <m; ++i)
{ delete[] a[i];
a[i] = NULL;
}
delete[] a;
a = NULL;
//删除b数组
for(i= 0;i<n;++i)
{ delete[] b[i];
a[i] = NULL;
}
delete[] b;
a = NULL;
return 0;
}

int main()
{
int m,n;
cout<<"请输入你要构造矩阵的行数和列数:"<<endl;
cin>>m>>n;
int **a=new int *[m];
cout<<"请按每行的顺序输入矩阵的值:"<<endl;
for(int i=0;i<m;i++)
{
a[i]=new int[n] ;
for(int j=0;j<n;j++)
{
cin>>a[i][j];
//cout<<a[i][j];
}
}
cout<<"您所输出的矩阵为:"<<endl;
for(i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
} jzzz(&a[0],m,n); return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-23
我用c语言写的 c++应该也可以用的 不知道是不是要达到你要的效果<!--StartFragment--> #include<stdio.h>
void main()
{
int n,i,j;
scanf("%d",&n);
int a[n][n];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==n-1)
printf("%d",a[j][i]);
else
printf("%d ",a[j][i]);
}
printf("\n");
}
}本回答被网友采纳