C数组实现矩阵的转置

直接上代码,在代码中有对矩阵的学习,包括初始化学习以及如何使用等。

#include <stdio.h>

/**
 * 给出提示,要求输入数组A
 * ,通过二维数组,进行数组的转置
 * 得出数组B,输出结果
 *
 * 该实例主要是为了进行学习二维数组
 * @brief main
 * @return
 */
int main(void)
{
    /**
     * 二维数组的初始化:
     * 1:分行给二维数组赋值
     *  static int a[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
     *
     * 2:将所有数据写在一个大括号中
     * static int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
     *
     * 3:对数组进行部分赋值
     * static int a[3][4] = {{1},{2},{3}};
     * 相当于该数组为
     *  1 0 0 0
     *  2 0 0 0
     *  3 0 0 0
     */

    //下面进行实例编写
    int row,colume;

    printf("Please the number of row and colume of the array(divided by ‘,‘):\n");
    scanf("%d,%d",&row,&colume);  //获取输入的行数和列数

    //定义数组A
    int array[row][colume];

    int i,j;

    //获取用户的输入来填充数组A
    for(i = 0;i < row;i++){
        for(j = 0;j < colume;j++){
            printf("Please enter the number in (%d,%d):\n",i,j);

            scanf("%d",&array[i][j]);
        }
    }

    //定义数组B
    int MatrixB[colume][row];

    //进行转置
    /**
     *  两个数组如果相互转置的话,
     *  则一个数组的行等于另一个数组的列
     *  一个数组的列等于另一个数组的行
     *  注意:
     *  转置之后的矩阵的行数和列数为转置之前的列数和行数
     */
    for(i = 0;i < colume;i++){
        for(j = 0;j < row;j++){
            MatrixB[i][j] = array[j][i];
        }
    }

    //输出矩阵B
    for(i = 0;i < colume;i++){
        for(j = 0;j < row;j++){
            printf("%d\t",MatrixB[i][j]);
        }

        printf("\n");
    }

    return 0;
}

时间: 2024-07-30 23:58:45

C数组实现矩阵的转置的相关文章

C代码和python代码:用二维数组实现矩阵的转置

目录 一.总结 二.C代码 三.Python代码 一.总结 输入用了 int(input()) ,但发现这种方法好像有点不方便 每次输入一个数字都要按回车,按空格不能识别 下次找找看看有没有其他输入方法 Python中没有数组,但列表类似数组 通过叠加[ ],就可以通过列表创建二维数组 Python中创建二维数组的方法(以本案例为例): matrixA=[[0 for i in range(4)] for i in range(3)] matrixA=[ [ 0, 0, 0, 0], [ 0,

数组-简单矩阵的转置

转置运算就是沿着矩阵对角线进行反转 1 #include<stdio.h> 2 3 #define N 3 4 int main(void) 5 { 6 int array[N][N]={ 7 {1,2,3}, 8 {4,5,6}, 9 {7,8,9} 10 }; 11 12 int i,j; 13 for(i=0;i<N;++i) 14 { 15 for(j=0;j<N;++j) 16 { 17 printf("%3d",array[i][j]); 18 }

c++数组-矩阵的转置

//矩阵的转置 //将一个二维数组行和列元素互换,存到另一个二维数组中. // 例如 // a=1 2 3 // 4 5 6 // b=1 4 // 2 5 // 3 6 // 程序如下: #include <iostream> using namespace std; int main( ) { int a[2][3]={{1,2,3},{4,5,6}}; int b[3][2],i,j; cout<<"array a:"<<endl; for (

任意定义一个二维数组,实现矩阵的转置——java

import java.util.Scanner; /* * 任意定义一个二维数组,编写程序实现矩阵的转置. * */ public class MatrixTransposition { public static void main(String[] args) { //create the rowNumber and columnNumber of the matrix Scanner input = new Scanner(System.in); System.out.println("

c++矩阵的转置和快速转置

矩阵的转置 将原矩阵的行.列对换,也就是将[i][j]和[j][i]位置上的数据对换. 程序代码: #include<vector>   //稀疏矩阵push pop operator[] 和顺序表一致   template<class T> struct Triple  //定义一个三元组 可以直接访问的定义成struct { size_t _row; size_t _col; T _value;   Triple(size_t row, size_t col, const T&

SDUT 3347 数据结构实验之数组三:快速转置

数据结构实验之数组三:快速转置 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 转置运算是一种最简单的矩阵运算,对于一个m*n的矩阵M( 1 = < m < = 10000,1 = < n < = 10000 ),它的转置矩阵T是一个n*m的矩阵,且T( i , j )=M( j , i ).显然,一个稀疏矩阵的转置仍然是稀疏矩阵.你的任务是对给定一个m*n的稀疏矩阵( m

对矩阵进行转置运算

package lianxi; public class juzhen { public static void main(String[] args) { // TODO 自动生成的方法存根 int arr[][]=new int[][]{{1,2,3},{4,5,6},{7,8,9}}; //创建二维数组 System.out.println("转置前的的矩阵是:"); printArray(arr); //输出二维数组 int arr2[][]=new int[arr.lengt

【数据结构】稀疏结构及稀疏矩阵的压缩存储,矩阵的转置

在矩阵中,有一类很重要的矩阵,就是-----稀疏矩阵. 所谓的稀疏矩阵呢,就是指的是,在矩阵中,有效的数据个数远远小于无效的数据个数(并且这些数据排列顺序没有规律).我们下面先举个稀疏矩阵的例子: 有效数据个数仅仅6个,其余都为无效数据0. 那我们将稀疏矩阵存在压缩矩阵中,设定一个三元组,使用{row,col,value}存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后顺序依次存放. 我们建立一个结构体: struct Triple//定义一个三元组,用来存储稀疏矩阵的x,y,坐标值

数据结构 - 数组、矩阵、广义表存储

数组的定义 数组的定义 数组是下标index 和值value 组成的序对的集合. 在数组中,每个有定义的下标都与一个值对应,这个值称做数组元素. 每个序对形如: (index,value) 数组的顺序表示和实现 由于计算机的内存结构是一维的,因此用一维内存来表示多维数组,就必须按某种次序将数组元素排成一列序列,然后将这个线性序列存放在存储器中. 一般都是采用顺序存储的方法来表示数组 一维数组的顺序表示 设第一个数组元素a[0]的存储地址是loc(a[0]),若已知每个数组元素占k个存储单元,则下