weixin_41153503 2021-12-19 15:02 采纳率: 100%
浏览 40
已结题

求一个矩阵的转置矩阵

c语言求一个矩阵的转置矩阵,怎么写都不对,矩阵是输入给出的。

  • 写回答

2条回答 默认 最新

  • 英雄哪里出来 2021年博客之星Top1 2021-12-19 15:22
    关注

    源码

    #include <stdio.h>
    #include <string.h>
    
    #define maxn 11
    int mat[maxn][maxn];
    
    void swap(int* a, int* b) {                    // (1)
        int tmp = *a;
        *a = *b;
        *b = tmp;
    }
    
    void maxtrixT(int n, int mat[][maxn]) {        // (2)
        int i, j;
        for(i = 0; i < n; ++i) {
            for(j = i; j < n; ++j) {               // (3)
                swap( &mat[i][j], &mat[j][i] );    // (4)
            }
        }
    }
    
    int main() {
        int n;
        int i, j;
        while(scanf("%d", &n) != EOF) {
            for(i = 0; i < n; ++i) {
                for(j = 0; j < n; ++j) {
                    scanf("%d", &mat[i][j]);
                }
            }
            
            maxtrixT(n, mat);
            
            for(i = 0; i < n; ++i) {
                for(j = 0; j < n; ++j) {
                    if(j) printf(" ");             // (5)
                    printf("%d", mat[i][j]);
                }
                puts("");
            }       
        }
        return 0;
    }
    

    解析

    ( 1 ) (1)(1) 利用指针,实现了变量的交换。
    ( 2 ) (2)(2) 转置函数的定义,其中第二个参数是个矩阵,二维数组的高维(即第一维)可以不定义;
    ( 3 ) (3)(3) 注意,这里的 j必须从 i开始枚举,不能从 0 开始,如果不理解,可以试试改成 0 以后,程序的执行结果;
    ( 4 ) (4)(4) 利用 swap实现mat[i][j]和mat[j][i]的变量交换;
    ( 5 ) (5)(5) 空格作为矩阵输出时的分隔符,之所以这么些,是因为第一个数字之前不需要分隔符;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月19日
  • 已采纳回答 12月19日
  • 创建了问题 12月19日

悬赏问题

  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退