转置矩阵问题,利用如下原型输出MxN矩阵

转置矩阵问题,利用如下原型输出MxN矩阵,已知m和n的值不超过10

img

b[i][j] = a[j][i]就行了呀

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/191617
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:(整理)蓝屏代码对应原因_蓝屏问题解决方法
  • 除此之外, 这篇博客: 指针实现矩阵转置中的 纯指针实现,m,n均不大于5 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include <stdio.h>
    #include <stdlib.h>
    
    void InputMatrix(int *p, int m, int n);
    void Transpose(int *p,int *q,int m,int n);
    void PrintMatrix(int *q, int m, int n);
    
    int main()
    {
        int n,m;
        int *p=NULL;
        int *q=NULL;
    
        do{
            printf("请输入n和m的值(n与m均不大于5):\n");
    	    scanf("%d%d",&n,&m);
        }while(m>5||n>5);
    
    	p=(int*)malloc(n*m*sizeof(int));
    	q=(int*)malloc(m*n*sizeof(int));
        if(p!=NULL)
        {
          InputMatrix(p,m,n);
          if(q!=NULL)
          {
              Transpose(p,q,m,n);
              PrintMatrix(q,m,n);
          }
          else{
            printf("q_malloc_error!\n");
            exit(-1);
    	}
        }
    	else{
            printf("p_malloc_error!\n");
            exit(-1);
    	}
    
    	free(p);
    	free(q);
    	p=NULL;
    	q=NULL;
        return 0;
    }
    
    void InputMatrix(int *p, int m, int n)
    {
        int i,j;
        printf("\n输入 %d*%d 矩阵:\n",n,m);
        for(i=0;i<n;i++)
    		{
    		    for(j=0;j<m;j++)
                {
                   scanf("%d",p+m*i+j);
                }
    		}
    }
    
    void Transpose(int *p,int *q,int m,int n)
    {
        int i,j;
        for(i=0;i<m;i++)
    	{
    		for(j=0;j<n;j++)
    			{
    			   *(q+m*i+j)=*(p+m*j+i);
    			}
    	}
    
    }
    void PrintMatrix(int *q, int m, int n)
    {
        int i,j;
        printf("\n转置矩阵为:\n");
        for(i=0;i<m;i++)
    	{
    		for(j=0;j<n;j++)
    			{
    			    printf("%d ",*(q+m*i+j));
    			}
    		printf("\n");
    	}
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^