独一无② 发表于 2015-11-7 19:10:40

C语言 ,矩形转置

输入: 第一行为整数N(1≤N≤100)。 接着是一个N*N的矩阵。
输出:转置矩阵
如:
2
1 2
1 2

输出

1 1
2 2

求大神讲解一下思路。:hug:

machimilk 发表于 2015-11-7 19:10:41


#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;
}

~风介~ 发表于 2015-11-7 19:59:53

0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a, a...

独一无② 发表于 2015-11-7 20:38:39

~风介~ 发表于 2015-11-7 19:59
0.依据得到的N声明一个N*N个数的一维数组。
1.将矩阵数据依次输入。
2.按照一定的规则输出。比如说:a ...

前两步我都知道如何写,但是最后一步,规律,好难:cry

独一无② 发表于 2015-11-7 20:55:16

machimilk 发表于 2015-11-7 20:45


我还没有 学指针,看不懂:cry

老师 发表于 2015-11-7 21:01:05

楼上的已经提供代码了的说(没点进去看,如有雷同纯属巧合),爱。。。
我这里也有一个思路,是这样的:
定义一个二维数组A
构建两层循环,输出的时候按照列输出就要了,外层定位列数,内层定位行数,这样就可以啦

~风介~ 发表于 2015-11-7 21:03:51

独一无② 发表于 2015-11-7 20:38
前两步我都知道如何写,但是最后一步,规律,好难

把第0部改成:依据得到的N声明一个N维数组,数组的每一行有N个元素。
1.               将矩阵数据依次输入。
2.               按照一定的规则输出。比如说:a,a,a...a
                                                             a,a,a...a

DAY 发表于 2015-11-8 22:59:17

是半三角,,数值对调吗?
页: [1]
查看完整版本: C语言 ,矩形转置