• 4.7矩阵的转置运算


     Q:编写一个函数实现对该矩阵的转置。

    #include<iostream>
    #include<cstdio>
    using namespace std;
    
    void InputMatrix(int (*a)[4],int n,int m) {
    	for(int i=0;i<n;i++)
    		for(int j=0;j<m;j++)
    			printf("%d",*(a+i)+j);
    }
    
    void OutputMatrix(int (*b)[4],int n,int m) {
    	for(int i=0;i<n;i++) {
    		for(int j=0;j<m;j++)
    			printf("%d",*(*(b+i)+j));
    		printf("
    ");
    	}
    		
    }
    
    void MatrixTranspose(int (*a)[4],int *(b)[3]) {
    	for(int i=0;i<4;i++) {
    		for(int j=0;j<3;j++)
    			b[i][j]=a[j][i];
    	}
    		
    }
    	
    int main()
    {
    	int a[3][4],b[4][3];
    	cout<<"input 3X4 matrix"<<endl;
    	InputMatrix(a,3,4);
    	MatrixTranspose(a,b);
    	cout<<"the Transposex Matrix is"<<endl;
    	OutputMatrix(b,4,3);
    	getchar();
    	return 0;
    }

    上述有点问题。

    总结:

    对于上述的函数参数中,形参都包含了一个指向二维数组的指针变量,例如 int (*a)[4]、int (*b)[4],因为此处的被调函数要对主函数中定义的二维数组进行修改,因此不能像4.6中介绍那样用 int *a 或者 int a[]的形式作为形参。

    对于一个二维数组a[m][n],数组名a代表指向二维数组第一行的指针(地址),a+1则指向二维数组第2行的指针。因此a+i指的是指向二维数组的第i+1 行的指针。它并不指向一个整型变量,而是指向一个整形的一位数组。

    因此作为二维数组指针的传递,实参可以是数组名,但是形参一定是如 (*a)[n] 的形式。其中,n表示该二维数组每行的元素个数,即列数。所以,int (*a)[4]表示:指向一个包含4个元素的一维数组。

    下面是比较简单的实现方法。

    #include <stdio.h>
    #define MAX 100
    int main()
    {
    int m, n;
    int i, j;
    int a[MAX][MAX];
    
    // 输入n阶矩阵
    
    scanf("%d", &n);
    for(i = 0; i < n; i++)
    {
          for(j = 0; j < n; j++)
         scanf("%d", &a[i][j]);
    }
    
    // 输出装置后的矩阵
    
    for(i = 0; i < n; i++)
    {
    for(j = 0 ; j < n;  j++)
        {
    printf("%d", a[j][i]);
    if(j == n - 1) printf("
    ");
    else printf(" ");
        }
    }
    return 0;
    }
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    Oracle实用SQL语句
    关键字过滤(转载)
    最简单的Cache
    .net中下载文件的方法(转载)
    为SharePoint 2013配置Office Web Apps
    使用Visual Studio 部署SharePoint时提示“路径中具有非法字符”
    TFS 2012 在IE 10(Windows 8)显示英文的解决方案
    为什么使用TFS 2012进行源代码管理——TFS 2012使用简介(一)
    SharePoint 2010 在WebPart页面上调用扩展方法报方法未定义的解决方案
    TreeView结合UpdatePanel使用时,SelectedNodeStyle不生效的解决方案
  • 原文地址:https://www.cnblogs.com/dd2hm/p/6750216.html
Copyright © 2020-2023  润新知