鱼C论坛

 找回密码
 立即注册
查看: 2512|回复: 7

C语言 ,矩形转置

[复制链接]
发表于 2015-11-7 19:10:40 | 显示全部楼层 |阅读模式
20鱼币
输入: 第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。
输出:转置矩阵
如:
2
1 2
1 2

输出

1 1
2 2

求大神讲解一下思路。:hug:
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 19:10:41 | 显示全部楼层
QQ截图20151107204520.png
  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {

  5.         int n=0;
  6.         cout<<"请输入一个整数N,以便生成N*N的数字矩阵"<<endl;
  7.         cin>>n;
  8.        
  9.        
  10.         if (n>100 || n<1)
  11.         {
  12.                 cout<<"请输入1-100之间的数字:"<<endl;
  13.                 system("pause");
  14.                 return -1;
  15.         }
  16.         //动态生成n*n数组并写入数据
  17.         int *p=new int[n*n];
  18.         for (int i=0;i<n;i++)
  19.         {
  20.                 for (int j=0;j<n;j++)
  21.                 {
  22.                         *(p+i*n+j)=j+1;//指针循环推进并写入数据
  23.                 }
  24.         }
  25.         cout <<"生成的矩阵如下:"<<endl<<endl;
  26.         //其实在上一个循环就可以显示原始数据数组,为了看得明白,再循环一次
  27.         for (int i=0;i<n;i++)
  28.         {
  29.                 for (int j=0;j<n;j++)
  30.                 {
  31.                         cout <<"\t"<<*(p+j*n+j);
  32.                 }
  33.                 cout<<endl;
  34.         }

  35.         cout<<endl<<endl<<"转置后的矩阵如下:"<<endl<<endl;
  36.         for (int i=0;i<n;i++)
  37.         {
  38.                 for (int j=0;j<n;j++)
  39.                 {
  40.                         //这个和上一个循环只有一句代码不同,就是最后的j和i就能转置矩阵
  41.                         cout <<"\t"<<*(p+j*n+i);
  42.                 }
  43.                 cout<<endl;
  44.         }
  45.         delete[] p;
  46.         system("pause");
  47.         return 0;
  48. }
复制代码

评分

参与人数 1荣誉 +3 鱼币 +5 收起 理由
~风介~ + 3 + 5 热爱鱼C^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 19:59:53 | 显示全部楼层
0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a[0], a[2]...
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-7 20:38:39 | 显示全部楼层
~风介~ 发表于 2015-11-7 19:59
0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a[0] ...

前两步我都知道如何写,但是最后一步,规律,好难:cry
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-11-7 20:55:16 | 显示全部楼层

我还没有 学指针,看不懂:cry
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 21:01:05 | 显示全部楼层
楼上的已经提供代码了的说(没点进去看,如有雷同纯属巧合),爱。。。
我这里也有一个思路,是这样的:
定义一个二维数组A
构建两层循环,输出的时候按照列输出就要了,外层定位列数,内层定位行数,这样就可以啦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 21:03:51 | 显示全部楼层
独一无② 发表于 2015-11-7 20:38
前两步我都知道如何写,但是最后一步,规律,好难

把第0部改成:依据得到的N声明一个N维数组,数组的每一行有N个元素。
1.                 将矩阵数据依次输入。
2.                 按照一定的规则输出。比如说:a[0][0],a[1][0],a[2][0]...a[N][0]
                                                             a[0][1],a[1][1],a[2][1]...a[N][1]
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2015-11-8 22:59:17 | 显示全部楼层
是半三角,,数值对调吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 12:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表