C语言 ,矩形转置
输入: 第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。输出:转置矩阵
如:
2
1 2
1 2
输出
1 1
2 2
求大神讲解一下思路。:hug:
#include <iostream>
using namespace std;
int main()
{
int n=0;
cout<<"请输入一个整数N,以便生成N*N的数字矩阵"<<endl;
cin>>n;
if (n>100 || n<1)
{
cout<<"请输入1-100之间的数字:"<<endl;
system("pause");
return -1;
}
//动态生成n*n数组并写入数据
int *p=new int;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
*(p+i*n+j)=j+1;//指针循环推进并写入数据
}
}
cout <<"生成的矩阵如下:"<<endl<<endl;
//其实在上一个循环就可以显示原始数据数组,为了看得明白,再循环一次
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
cout <<"\t"<<*(p+j*n+j);
}
cout<<endl;
}
cout<<endl<<endl<<"转置后的矩阵如下:"<<endl<<endl;
for (int i=0;i<n;i++)
{
for (int j=0;j<n;j++)
{
//这个和上一个循环只有一句代码不同,就是最后的j和i就能转置矩阵
cout <<"\t"<<*(p+j*n+i);
}
cout<<endl;
}
delete[] p;
system("pause");
return 0;
}
0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a, a... ~风介~ 发表于 2015-11-7 19:59
0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a ...
前两步我都知道如何写,但是最后一步,规律,好难:cry machimilk 发表于 2015-11-7 20:45
我还没有 学指针,看不懂:cry 楼上的已经提供代码了的说(没点进去看,如有雷同纯属巧合),爱。。。
我这里也有一个思路,是这样的:
定义一个二维数组A
构建两层循环,输出的时候按照列输出就要了,外层定位列数,内层定位行数,这样就可以啦 独一无② 发表于 2015-11-7 20:38
前两步我都知道如何写,但是最后一步,规律,好难
把第0部改成:依据得到的N声明一个N维数组,数组的每一行有N个元素。
1. 将矩阵数据依次输入。
2. 按照一定的规则输出。比如说:a,a,a...a
a,a,a...a
是半三角,,数值对调吗?
页:
[1]