鱼C论坛

 找回密码
 立即注册
查看: 2341|回复: 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:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-11-7 19:10:41 | 显示全部楼层
QQ截图20151107204520.png
#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[n*n];
        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;
}

评分

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

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

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

前两步我都知道如何写,但是最后一步,规律,好难:cry
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

我还没有 学指针,看不懂:cry
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

使用道具 举报

发表于 2015-11-8 22:59:17 | 显示全部楼层
是半三角,,数值对调吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-26 14:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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